1.創建一個類(類定義)
class AddrBookEntry(object): # 類定義
'address book entry class'
def __init__(self, nm, ph): # 定義構造器
self.name = nm # 設置 name
self.phone = ph # 設置 phone
print 'Created instance for:', self.name
def updatePhone(self, newph): # 定義方法
self.phone = newph
print 'Updated phone# for:', self.name
對任何類C,表13.1 顯示了類C的所有特殊屬性:
C.__name__ 類C的名字(字符串)C.__doc__ 類C的文檔字符串
C.__bases__ 類C的所有父類構成的元組
C.__dict__ 類C的屬性
C.__module__ 類C定義所在的模塊(1.5 版本新增)
C.__class__ 實例C對應的類(僅新式類中)
2.__init__() __new__() __del__()
(1) 當類被調用,實例化的第一步是創建實例對象。一旦對象創建了,Python 檢查是否實現了__init__()方法。默認情況下,如果沒有定義(或覆蓋)特殊方法__init__(),對實例不會施加任何特別的操作.任何所需的特定操作,都需要程序員實現__init__(),覆蓋它的默認行爲。如果__init__()沒有實現,則返回它的對象,實例化過程完畢。
(2) 爲何我們認爲__new__()比__init__()更像構造器呢?這是因爲__new__()必須返回一個合法的實例,這樣解釋器在調用__init__()時,就可以把這個實例作爲self 傳給它。調用父類的__new__()來創建對象,正像其它語言中使用new 關鍵字一樣。
3.對象的內建函數
issubclass() 布爾函數判斷一個類是另一個類的子類或子孫類。它有如下語法:issubclass(sub, sup)
Isinstance() 布爾函數在判定一個對象是否是另一個給定類的實例時,非常有用。它有如下語法:isinstance(obj1, obj2)
hasattr(), getattr(),setattr(), delattr()
4.this ,super,vars()
vars()內建函數與dir()相似,只是給定的對象參數都必須有一個__dict__屬性。vars()返回一個字典,它包含了對象存儲於其__dict__中的屬性(鍵)及值。