1. 程式人生 > >面向對象編程總結

面向對象編程總結

att 當前 總結 static post test 兩個 nbsp class

字段:

  普通字段:__init__聲明的字段,

  靜態字段:類中綁定的字段。由於實例屬性比類屬性高,所以類屬性和實例屬性不要重名

  普通字段和靜態字段都可以刪除和修改。

裝飾器:

  @property: 以調用屬性的方式調用方法,另外他還有setter和deleter方法。setter和deleter可以重新修改或刪除帶私有修飾符的字段

  @staticmethod: 靜態方法,不能調用類中的靜態字段和類中的方法。

  @classmethod: 類方法,可以調用類中的靜態字段, 類中方法不能調用。

hasattr,getattr,setattr:

  你可以利用hasattr檢查類中的方法(對於特殊方法,除了__len__,__call__需要聲明才能檢查,其他的特殊方法都可以),靜態字段和普通字段。

特殊變量:

  __doc__屬性: 模塊本身是一個對象,而每個對象都會有一個__doc__屬性。該屬性用於描述該對象的作用。(相當於註釋)

  __weakref__:對一個對象的弱引用。相對於通常的引用來說,如果一個對象有一個常規的引用,它是不會被垃圾收集器銷毀的,但是如果一個對象只剩下一個弱引 用,那麽它可能被垃圾收集器收回。

  __dict__: 對於類來說,__dict__會將其所有所有的靜態字段、普通方法、聲明的特殊方法(以及__doc__,__weakref__)、類方法、靜態方法、屬性方法返回.

     對於實例來說,只返回普通字段。

  __name__: 當腳本在當前文件運行時,__name__ = __main__, 當被其他腳本文件import引入時被調用執行,__name__ = 被調用的腳本文件名。

  __len__: len(obj)時調用obj實例中的__len__函數,具體返回什麽由自己定義(允許我們自己定制,但一般返回長度)。

  __str__和__repr__: 如果把實例變為str,就要用到這兩個,(請記住,類雖然有這個方法,但是沒有返回值),__str__面向用戶,__repr__面向程序員

  __slot__:傳入一個元組,限制實例的屬性只能是slot傳入的元祖中的(類屬性不受限制,而 且動態綁定了類屬性之後,實例屬性也可以用),而且,動態綁定時, 同一屬性在類屬性和實例屬性中只能出現一次。對方法也是一樣。

  __ getitem__: 當傳入切片是會調用__getitem__,當然函數要我們自己寫

  __setitem__:當傳入切片並且賦值時,調用setitem方法,函數也要我們自己寫

  __delitem__:

  對比__module__, __class__, __name__:
    對於實例或類而言,__Module__變量返回的是模塊名(也就是文件的名字)。在本文件中返回__main__,其他文件中運行時返回文件名,如lib.test.

    對於類而言,__class__返回<class ‘‘type">。對於實例對象來說,則返回<class ‘__main__.Foo‘>或者<class ‘test.lib.Foo‘>

    只有類才有__name__變量,返回類名,即Foo。

技術分享圖片技術分享圖片

  

面向對象編程總結