導航:首頁 > 編程語言 > python面向對象實例

python面向對象實例

發布時間:2022-08-18 16:16:41

python 面向對象基礎

class Test:
def setdata(self, value):
self.data = value
def display(self):
print self.data

x = Test()
y = Test()

x.setdata("test")
y.setdata(123456)

x.display()
y.display()
=======================
x.setdata = "test"
y.setdata = 123456
修改為
x.setdata("test")
y.setdata(123456)
這樣就行了。
原因是Test對象中沒有setdata屬性,只有setdata方法,方法是通過setdata()這種形式調用的。

希望能對你有所幫助!

② Python 面向對象定義一個 dog 類,包含 jaw,paw,mouth 屬性以及bark(),escape(),bite() 和 eat() 等動作

classdog(object):
def__init__(self,jaw,paw,mouth):
self.jaw=jaw
self.paw=paw
self.mouth=mouth

defbark(self):
return"Wang,wang"

defescape(self):
return"eacapewith"+self.paw

defbite(self):
return"bitewith"+self.jaw

defeat(self):
return"eatwith"+self.mouth

defreaction(self,provoke):
action={"attack":self.escape(),"food":self.eat()}
returnaction[provoke]

xiaohuang=dog("jaw","paw","month")
printxiaohuang.reaction("attack")

很好奇哪裡會有這么奇怪的題目~

③ Python中的面向對象是什麼意思

計算機剛出現不久,產生了一種常見的編程範式是面向過程,其構造類似於做菜的配方,因為它以函數和代碼塊的形式提供一組步驟,這些步驟順序地流動以完成任務。用面向過程的語言開發一款銀行軟體系統的取款模塊,設計思路是基於取款這個過程的。首先,插入銀行卡、輸入密碼、ATM驗證賬號和密碼。其次,輸入取款金額、ATM驗證余額、ATM驗證賬號和密碼。最後ATM吐出鈔票。面向過程的軟體開發就是圍繞這些步驟來設計的。

然而,面向過程的代碼在代碼規模變大時會難以理解和維護,不利於修改和擴充(增加新功能),也不利於代碼的重用。因此軟體開發發展形成了面向對象的分析設計。

同樣是銀行軟體系統的取款模塊,面向對象是圍繞取款操作中有哪些參與者來設計軟體的。參與者包括:銀行卡,客戶和ATM機。銀行卡包含賬號和密碼。插入銀行卡、輸入密碼和輸入取款金額都是客戶的動作。驗證賬號和密碼、驗證余額以及吐出鈔票都是ATM的行為。圍繞對象來設計軟體時。首先以姓名為參數實例化用戶類創建一個用戶對象。然後以用戶、卡號、密碼為參數,實例化銀行卡類創建一個銀行卡對象。然後以銀行卡對象為參數實例化ATM類創建一個ATM機對象。然後調用驗證用戶名密碼方法和吐鈔票方法,完成取鈔功能。當修改驗證密碼的代碼時,比如改為人臉驗證,其它地方是不受影響的。這就是面向對象開發的一個重大的好處。

總結來說,面向對象它是在面向過程滿足不了軟體發展需求的背景下出現的。它更符合人類的思考方式。所以面向對象的優勢非常明顯,具體表現在四個方面:

①可維護性好。

②可擴展性好,系統里新加一個模塊,代碼的影響能降到最低。

③可重用性好,別的系統可以非常方便的重用這個系統里某個模塊的代碼,幾乎不用更改。

④和面向過程相比,面向對象開發效率更高。

知道了面向對象的優勢,下面引入面向對象的定義。面向是以……為導向的,以……為目標的意思。對象是物體、目標、客體和對象的意思。因此面向對象的定義是:以對象為導向,圍繞對象來開發應用程序的軟體開發方法。

關於Python的基礎問題可以看下這個網頁的視頻教程,網頁鏈接,希望我的回答能幫到你。

④ 如何理解關於python 面向對象的特性

python中一切皆為對象
其實面向對象沒什麼高大上的東西,只不過把我們平時對於事物的描述和動作系統的總結成了一個定義事物的方法而已。
我們平時向別人介紹一個他(她)從未見過的東西,會從外形和外貌特徵來說明這個東西,比如顏色,大小等,這就對象的屬性。還會介紹這個東西能做什麼或者有什麼用,這就是對象的方法。所以用屬性和方法就可以定義一個對象。也就是說一個對象包含了各種屬性和方法。
在python中使用對象屬性和方法的記法為:object.attribute 或 object.method()
Python中創建對象的第一步是建立一個類(class),這個類就類似於我們區分動物和植物。動物類和植物類各有自己的特徵,當我們見到一個事物時,如果它滿足動物的特徵,我們就說它是動物;如果它滿足植物的特徵,那麼它就屬於植物。同樣的當我們在python中建立一個類時,就要說名這個類的屬性有什麼,方法有什麼。然後再創建屬於這個類的具體實例,也就是對象。那麼這個對象也就有了這個類的屬性和方法。但具體的屬性和方法根據具體對象而定。就像動物類的屬性就是有耳朵,有眼睛,有皮毛,方法就是移動,進食等等,具體對象比如說是兔子那就是有長長的耳朵,紅色的眼睛,白色的皮毛。方法就是奔跑,進食就是吃胡蘿卜。這樣理解類和對象或者實例就沒什麼抽象的了。
__init__(): 創建類的默認屬性,也稱初始化
__str__() : 返回對象的字元串表達式
多態:對於不同的類可以有同名的方法,同名的方法應用到不同的類可以有不同的行為。
形如:
class Triangle:
def __init__(self, width,height):
self.width = width
self.height = height
def getArea(self):
area = self.width * self.height / 2.0
return area
class Square:
def __init__(self,size):
self.size = size
def getArea(self):
area = self.size * self.size
return area
繼承:類可以從其他類繼承屬性和方法;從其他類繼承屬性或方法稱為派生類或者子類。
形如:class Animal:
def __init__(self,name):
self.name = name
class Dog(Animal):
def __init__(self,color):
self.color = color
def runSpeed():
pass
這樣Dog就繼承了Animal的name屬性。
對象的方法代碼暫未想出可以用pass佔位。

⑤ Python面向對象之什麼是類

比如模具,可以重復使用製造出產品, 也可以稍微修改做出有些區別但類似到產品。
python面向對象編程的類就是可以重復利用,跟模具一樣, 生產出來到產品叫對象,具體到某一個產品,這個稱為實例。

⑥ Python面向對象編程之繼承與多態詳解

Python面向對象編程之繼承與多態詳解
本文實例講述了Python面向對象編程之繼承與多態。分享給大家供大家參考,具體如下:
Python 類的繼承
在OOP(Object Oriented Programming)程序設計中,當我們定義一個class的時候,可以從某個現有的class 繼承,新的class稱為子類(Subclass),而被繼承的class稱為基類、父類或超類(Base class、Super class)。
我們先來定義一個class Person,表示人,定義屬性變數 name 及 sex (姓名和性別);
定義一個方法print_title():當sex是male時,print man;當sex 是female時,print woman。參考如下代碼:
class Person(object):
def __init__(self,name,sex):
self.name = name
self.sex = sex
def print_title(self):
if self.sex == "male":
print("man")
elif self.sex == "female":
print("woman")
class Child(Person): # Child 繼承 Person
pass
May = Child("May","female")
Peter = Person("Peter","male")
print(May.name,May.sex,Peter.name,Peter.sex) # 子類繼承父類方法及屬性
May.print_title()
Peter.print_title()

而我們編寫 Child 類,完全可以繼承 Person 類(Child 就是 Person);使用 class subclass_name(baseclass_name) 來表示繼承;

繼承有什麼好處?最大的好處是子類獲得了父類的全部屬性及功能。如下 Child 類就可以直接使用父類的 print_title() 方法

實例化Child的時候,子類繼承了父類的構造函數,就需要提供父類Person要求的兩個屬性變數 name 及 sex:

在繼承關系中,如果一個實例的數據類型是某個子類,那它也可以被看做是父類(May 既是 Child 又是 Person)。但是,反過來就不行(Peter 僅是 Person,而不是Child)。

繼承還可以一級一級地繼承下來,就好比從爺爺到爸爸、再到兒子這樣的關系。而任何類,最終都可以追溯到根類object,這些繼承關系看上去就像一顆倒著的樹。比如如下的繼承樹:

isinstance() 及 issubclass()

Python 與其他語言不同點在於,當我們定義一個 class 的時候,我們實際上就定義了一種數據類型。我們定義的數據類型和Python自帶的數據類型,比如str、list、dict沒什麼兩樣。

Python 有兩個判斷繼承的函數:isinstance() 用於檢查實例類型;issubclass() 用於檢查類繼承。參見下方示例:

class Person(object):
pass
class Child(Person): # Child 繼承 Person
pass
May = Child()
Peter = Person()
print(isinstance(May,Child)) # True
print(isinstance(May,Person)) # True
print(isinstance(Peter,Child)) # False
print(isinstance(Peter,Person)) # True
print(issubclass(Child,Person)) # True

Python 類的多態

在說明多態是什麼之前,我們在 Child 類中重寫 print_title() 方法:若為male,print boy;若為female,print girl
class Person(object):
def __init__(self,name,sex):
self.name = name
self.sex = sex
def print_title(self):
if self.sex == "male":
print("man")
elif self.sex == "female":
print("woman")
class Child(Person): # Child 繼承 Person
def print_title(self):
if self.sex == "male":
print("boy")
elif self.sex == "female":
print("girl")
May = Child("May","female")
Peter = Person("Peter","male")
print(May.name,May.sex,Peter.name,Peter.sex)
May.print_title()
Peter.print_title()

當子類和父類都存在相同的 print_title()方法時,子類的 print_title() 覆蓋了父類的 print_title(),在代碼運行時,會調用子類的 print_title()

這樣,我們就獲得了繼承的另一個好處:多態。

多態的好處就是,當我們需要傳入更多的子類,例如新增 Teenagers、Grownups 等時,我們只需要繼承 Person 類型就可以了,而print_title()方法既可以直不重寫(即使用Person的),也可以重寫一個特有的。這就是多態的意思。調用方只管調用,不管細節,而當我們新增一種Person的子類時,只要確保新方法編寫正確,而不用管原來的代碼。這就是著名的「開閉」原則:

對擴展開放(Open for extension):允許子類重寫方法函數

對修改封閉(Closed for modification):不重寫,直接繼承父類方法函數

子類重寫構造函數

子類可以沒有構造函數,表示同父類構造一致;子類也可重寫構造函數;現在,我們需要在子類 Child 中新增兩個屬性變數:mother 和 father,我們可以構造如下(建議子類調用父類的構造方法,參見後續代碼):
class Person(object):
def __init__(self,name,sex):
self.name = name
self.sex = sex
class Child(Person): # Child 繼承 Person
def __init__(self,name,sex,mother,father):
self.name = name
self.sex = sex
self.mother = mother
self.father = father
May = Child("May","female","April","June")
print(May.name,May.sex,May.mother,May.father)

若父類構造函數包含很多屬性,子類僅需新增1、2個,會有不少冗餘的代碼,這邊,子類可對父類的構造方法進行調用,參考如下:
class Person(object):
def __init__(self,name,sex):
self.name = name
self.sex = sex
class Child(Person): # Child 繼承 Person
def __init__(self,name,sex,mother,father):
Person.__init__(self,name,sex) # 子類對父類的構造方法的調用
self.mother = mother
self.father = father
May = Child("May","female","April","June")
print(May.name,May.sex,May.mother,May.father)

多重繼承

多重繼承的概念應該比較好理解,比如現在需要新建一個類 baby 繼承 Child , 可繼承父類及父類上層類的屬性及方法,優先使用層類近的方法,代碼參考如下:
class Person(object):
def __init__(self,name,sex):
self.name = name
self.sex = sex
def print_title(self):
if self.sex == "male":
print("man")
elif self.sex == "female":
print("woman")
class Child(Person):
pass
class Baby(Child):
pass
May = Baby("May","female") # 繼承上上層父類的屬性
print(May.name,May.sex)
May.print_title() # 可使用上上層父類的方法
class Child(Person):
def print_title(self):
if self.sex == "male":
print("boy")
elif self.sex == "female":
print("girl")
class Baby(Child):
pass
May = Baby("May","female")
May.print_title() # 優先使用上層類的方法

⑦ python使用面向對象的編程方法完成「超市管理系統」的編寫

是代碼有bug需要調試,還是別的

閱讀全文

與python面向對象實例相關的資料

熱點內容
pythonclass使用方法 瀏覽:221
移動加密軟體去哪下載 瀏覽:281
php彈出alert 瀏覽:207
吉林文檔課件加密費用 瀏覽:131
感測器pdf下載 瀏覽:284
隨車拍app綁定什麼設備 瀏覽:896
方維團購系統源碼 瀏覽:991
linux反彈shell 瀏覽:158
列印機介面加密狗還能用嗎 瀏覽:300
二板股票源碼 瀏覽:448
度人經pdf 瀏覽:902
怎麼配置android遠程伺服器地址 瀏覽:960
java程序員看哪些書 瀏覽:943
什麼app可以免費和外國人聊天 瀏覽:797
pdf手寫筆 瀏覽:182
別永遠傷在童年pdf 瀏覽:990
愛上北斗星男友在哪個app上看 瀏覽:421
主力散戶派發源碼 瀏覽:671
linux如何修復伺服器時間 瀏覽:61
榮縣優途網約車app叫什麼 瀏覽:479