- Python內置對象
- __dict__ : 類的屬性(包含一個字典,由類的數據屬性組成)
- __doc__ :類的文檔字符串
- __name__: 類名
- __module__: 類定義所在的模塊(類的全名是’__main__.className’,如果類位於一個導入模塊mymod中,那麼className.__module__ 等於 mymod)
- __bases__ : 類的所有父類構成元素(包含了一個由所有父類組成的元組)
- 面向對象的編程帶來的主要好處之一是代碼的重用,實現這種重用的方法之一是通過繼承機制。繼承完全可以理解成類之間的類型和子類型關係。
- 類的繼承在python中的一些特點:
1:在繼承中基類的構造(__init__()方法)不會被自動調用,它需要在其派生類的構造中親自專門調用。
2:在調用基類的方法時,需要加上基類的類名前綴,且需要帶上self參數變量。區別於在類中調用普通函數時並不需要帶上self參數
3:Python總是首先查找對應類型的方法,如果它不能在派生類中找到對應的方法,它纔開始到基類中逐個查找。(先在本類中查找調用的方法,找不到纔去基類中找)。
- 類的繼承:
class SubClassName (ParentClass1[, ParentClass2, ...]):
'Optional class documentation string'
class_suite
class Parent:
def myMethod(self):
print '調用父類方法'
class Child(Parent):
def myMethod(self):
print '調用子類方法'
c = Child()
c.myMethod()
- 檢測父類和子類:
- issubclass() - 布爾函數判斷一個類是另一個類的子類或者子孫類,語法:issubclass(sub,sup)
- isinstance(obj, Class) 布爾函數如果obj是Class類的實例對象或者是一個Class子類的實例對象則返回true。
- 基礎重載方法:
- 1 __init__ ( self [,args…] )構造函數,簡單的調用方法: obj = className(args)
- 2 __del__( self ),析構方法, 刪除一個對象,簡單的調用方法 : dell obj
- 3 __repr__( self ),轉化爲供解釋器讀取的形式,簡單的調用方法 : repr(obj)
- 4 __str__( self ),用於將值轉化爲適於人閱讀的形式,簡單的調用方法 : str(obj)
- 5 __cmp__ ( self, x ),對象比較,簡單的調用方法 : cmp(obj, x)
- 類屬性與方法
- 類的私有屬性
- __private_attrs:兩個下劃線開頭,聲明該屬性爲私有,不能在類的外部被使用或直接訪問。在類內部的方法中使用時 self.__private_attrs。
類的方法
- 在類地內部,使用def關鍵字可以爲類定義一個方法,與一般函數定義不同,類方法必須包含參數self,且爲第一個參數
類的私有方法
- __private_method:兩個下劃線開頭,聲明該方法爲私有方法,不能在類地外部調用。在類的內部調用 self.__private_methods
- Python不允許實例化的類訪問私有數據,但你可以使用 object._className__attrName 訪問屬性