面向對象編程總結
字段:
普通字段:__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。
面向對象編程總結