python核心編程八——面向對象編程

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__中的屬性(鍵)及值。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章