Python 對象特殊方法:(一)對象創建與銷燬

對象創建與銷燬

Python中已雙下劃線開頭和結尾的方法是特殊方法,分別對應對象的一些特殊行爲。看過《參考手冊》對於對象行爲與特殊方法的系統解釋,這裏整理一下筆記。
這裏主要介紹python中對象創建、初始化和銷燬等行爲對應的特殊方法。

__new__(cls, [, *args [, **kwargs]]) #對象創建行爲
__init__(self, [, *args [, **kwargs]]) #對象初始化行爲
__del__(self) #對象銷燬行爲

__new__()方法

__new__()方法對應實例的創建,需要返回類對象。

__init__()方法

__init__()方法對應對象的初始化,不需要返回。

__del__()方法

對象銷燬時調用,用於釋放資源。

總結

__new__()與__init__()區別

有一個明顯的區別是傳參和返回:

__new__()第一個參數是cls, __init__()第一個參數是self,__new__()與__init__()的其他參數必須保持一致;
__new__方法一般需要返回類的對象,__init__沒有返回。

創建與初始化的區別還是很好理解的。《參考》中給出一個例子。

調用A(args)創建對象時,會轉換爲以下步驟:

 #python
 x = A.__new__(A, args)
 if isinstance(x, A): x.__init__(args)

這個步驟很好的解釋了:如果__new__不返回對象,則__init__不會被調用。

__new__()與__del__()使用

__new__()與__del__()方法一般很少需要用戶定義。__new__()方法通常只定義在元類或繼承自不可變類型之一(證書、字符串、元組等)的用戶定義對象中。__del__()方法只有存在某種關鍵資源管理問題的情況下才會定義,如釋放鎖定或關閉連接時。

發佈了46 篇原創文章 · 獲贊 10 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章