class ClassName: '類的幫助信息' #類文檔字符串 class_suite #類體
"創建 Employee 類的第一個對象" emp1 = Employee("Zara", 2000) "創建 Employee 類的第二個對象" emp2 = Employee("Manni", 5000)
emp1.displayEmployee() emp2.displayEmployee() print "Total Employee %d" % Employee.empCount
● __dict__ : 類的屬性(包含一個字典,由類的數據屬性組成)
● __doc__ :類的文檔字符串
● __name__: 類名
● __module__: 類定義所在的模塊(類的全名是'__main__.className',如果類位於一個導入模塊mymod中,那麼className.__module__ 等於 mymod)
● __bases__ : 類的所有父類構成元素(包含了一個由所有父類組成的元組)
1:在繼承中基類的構造(__init__()方法)不會被自動調用,它需要在其派生類的構造中親自專門調用。
2:在調用基類的方法時,需要加上基類的類名前綴,且需要帶上self參數變量。區別於在類中調用普通函數時並不需要帶上self參數
3:Python總是首先查找對應類型的方法,如果它不能在派生類中找到對應的方法,它纔開始到基類中逐個查找。(先在本類中查找調用的方法,找不到纔去基類中找)。
如果在繼承元組中列了一個以上的類,那麼它就被稱作"多重繼承" 。
class SubClassName (ParentClass1[, ParentClass2, ...]): 'Optional class documentation string' class_suite
- issubclass() - 布爾函數判斷一個類是另一個類的子類或者子孫類,語法:issubclass(sub,sup)
- isinstance(obj, Class) 布爾函數如果obj是Class類的實例對象或者是一個Class子類的實例對象則返回true。
序號 | 方法, 描述 & 簡單的調用 |
1 |
__init__ ( self [,args...] ) 構造函數 簡單的調用方法: obj = className(args) |
2 |
__del__( self ) 析構方法, 刪除一個對象 簡單的調用方法 : del obj |
3 |
__repr__( self ) 轉化爲供解釋器讀取的形式 簡單的調用方法 : repr(obj) |
4 |
__str__( self ) 用於將值轉化爲適於人閱讀的形式 簡單的調用方法 : str(obj) |
5 |
__cmp__ ( self, x ) 對象比較 簡單的調用方法 : cmp(obj, x) |
#!/usr/bin/python class Vector: def __init__(self, a, b): self.a = a self.b = b def __str__(self): return 'Vector (%d, %d)' % (self.a, self.b) def __add__(self,other): return Vector(self.a + other.a, self.b + other.b) v1 = Vector(2,10) v2 = Vector(5,-2) print v1 + v2 以上代碼執行結果如下所示: Vector(7,8)
- __foo__: 定義的是特列方法,類似 __init__() 之類的。
- _foo: 以單下劃線開頭的表示的是 protected 類型的變量,即保護類型只能允許其本身與子類進行訪問,不能用於 from module import *
- __foo: 雙下劃線的表示的是私有類型(private)的變量, 只能是允許這個類本身進行訪問了。