一、自定義類
1、屬性與方法
格式:
classclassname:
def__init__
(self,a,b):
self.a=a
self.b=b
def ...
>一般都有乙個__init__函式來定義屬於這個類的引數,前後都被"__"包圍的函式為特殊方法
;以"__"開頭的變數只能讀,不能寫,相當於private資料。
>如果重新實現str,repr等方法,值應使用表象形式:
def__str__
(self):
return
"(,)
".format(self)
>如果呼叫乙個類的方法,python就會自動在類樹中進行回溯,如果一直找不到就會產生乙個attributeerror.
>在方法前加super()表示呼叫基類的方法,總是呼叫super().__init__()是乙個種合理的做法。
>自定義類的所有例項都支援==,這種比較總是返回false,通過對特殊方法__eq__()進行重新實現,__ne__()也會跟著自動實現。
>如果我們希望避免不適當的比較,可以使用斷言(如:assert isinstance(other,point));也可以用產生typeerror異常來宣告不支援這兩個物件的比較操作(如:if not isinstance(other,point):raise typeerror());方法三:if not isinstance(other,point):return notimplem-emted,但只有在類只對比較特殊方法進行了重新實現才可能返回notimplemented。
>isinstance()為內建的函式,以乙個物件與乙個類(或類構成的元組)為引數,如果物件屬於給定的類,或基類,就返回true。
>object提供的比較的特殊方法:__lt__(),__le__(),__eq__(),__ne__(),__ge__(),__gt__()。
2、繼承與多型
classclassname2(classname):
def__init__
(self)
...
classname2是classname的繼承類。
多型:給定類的任意物件在使用時都可以看作該類的任意某個基類的物件。
3、使用特性進行屬性的訪問控制
修飾器(decorator):是乙個函式,該函式以乙個函式或方法為引數,並返回引數「修飾後」版本。使用修飾器以@符號引導來進行標記。
例(用內建的property()函式對a的屬性進行修飾,使a必須為大於0的數):
@propertydefa(self):
return self.__a
@a.setter
defa(self,a):
assert a>0,"
a must be nonzero and non-negative
"self.
__a=a
每個建立的特性都包含getter,setter,deleter等屬性。
4、建立完全整合的資料型別
對於不想要的來自於基類的方法,可以用raise error的來取消這些方法的使用。對於要同時取消多個類的情況,可以借助內建的exec()函式來實現,它會動態地執行從給定物件傳遞來的**。
二、自定義組合類
組合型別的特殊方法:
__contains__(self,x) x iny__delitem__(self,k) del
y[k]
__getitem__
(self,k) y[k]
__iter__(self) for x in y :pass
返回序列中y中的項或對映y中鍵的迭代子
__len__
(self) len(y)
__reversed__
(self) reversed(y)
__setitem__(self,k,v) y[k]=v
對於賦值=後邊的值也可以用or,如果第乙個值為false,則使用or後邊的值(a= b or 3)。
Python3 物件導向程式設計(類和物件)
今天想和大家聊聊物件導向中的類和物件,其實一開始我學的雲裡霧裡,借鑑了乙個我以前看到過的解釋,希望可以用大家容易理解的方式來說道說道。生活中每乙個具體的東西都可以被認為是物件,例如華為p40 小公尺10 蘋果11 oppo等手機,你可以認為這些物體是 物件 雖然他們各不相同 各有特色,但是都可以歸結...
Python3 物件導向程式設計
python使用class關鍵字來定義類 class car definfor self print this is a car car car car.infor 內建方法isinstance 來測試乙個物件是否為某個類的例項 公有成員 既可以在類的內部訪問,也可以在外部程式中使用 在idle環境...
Python3物件導向程式設計總結
自學筆記 邏輯可能比較混亂,想到哪說到哪,可能存在不少的問題歡迎指出。最簡單的乙個類 在python中類的命名必須以字母或者下畫線開頭,並且只能包含字母 下畫線和數字。另外推薦使用駝峰命名方式 大寫字母開頭,隨後的任意乙個單詞都以大寫字母開頭 python最簡單的乙個類的建立 class myfir...