1. 程式人生 > 程式設計 >Python解構函式__del__定義原理解析

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())

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。