您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關深入淺析Python中的__del__析構函數,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。
析構函數__del__定義:在類里定義,如果不定義,Python 會在后臺提供默認析構函數。
析構函數__del__調用:
A、使用del 顯式的調用析構函數刪除對象時:del對象名;
class Foo: def __init__(self,x): self.x=x def __del__(self): #在對象資源被釋放時觸發 print('-----del------') print(self) f=Foo(100000) del f
B、當對象在某個作用域中調用完畢,跳出其作用域的同時析構函數也會被調用一次,這樣可以用來釋放內存空間。
class Foo: def __init__(self,x): self.x=x def __del__(self): #在對象資源被釋放時觸發 print('-----del------') print(self) f=Foo(100000) time.sleep(5) #time.sleep(5)執行完后,自動調用__del__()
注意:__del__只是刪除了對象的引用,比如上面del f 只是f對象不再執行實例數據的存儲空間了,實例數據并沒有被刪除,刪除實例數據需要python本身的垃圾回收機制;
垃圾回收機制
Python 采用垃圾回收機制來清理不再使用的對象;Python 提供gc模塊釋放不再使用的對象,Python 采用‘引用計數' 的算法方式來處理回收,
即:當某個對象在其作用域內不再被其他對象引用的時候,Python 就自動清除對象;
Python 的函數collect()可以一次性收集所有待處理的對象(gc.collect())
看完上述內容,你們對深入淺析Python中的__del__析構函數有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。