Python 3.1 快速導覽 - 類別 __del__()

建構子 (constructor) 用來建立物件 (object) ,當物件不需要被使用時,直譯器 (interpreter) 會主動替物件呼叫 __del__() 方法 (method) ,這是物件自動銷毀的方法,也就是從記憶體中釋放空間的步驟,被稱為解構子 (destructor) ,當然,我們也可以改寫 (override) 這個方法。



例如
class Demo:
    def __init__(self, i):
        self.i = i
    
    def __str__(self):
        return str(self.i)
    
    def __del__(self):
        print("bye-bye " + self.__str__())
         
    def hello(self):
        print("hello " + self.__str__())

a = Demo(22)
a.hello()
a = Demo(33)
a.hello()
a = Demo(44)
a.hello()
a = Demo(55)
a.hello()

# 《程式語言教學誌》的範例程式
# http://pydoing.blogspot.com/
# 檔名:delm01.py
# 功能:示範 Python 程式 
# 作者:張凱慶
# 時間:西元 2010 年 12 月 


執行結果如下



第 8 行到第 9 行,這裡是 __del__() 定義的地方
def __del__(self):
   print("bye-bye " + self.__str__())


我們只有使用變數 (variable) a 一個名稱,利用建構子 Demo() 建立物件後呼叫 hello() ,然後重新呼叫 Demo() 建立另一個 Demo 型態的物件,我們可以看到直譯器主動呼叫 __del__() ,印出 "bye-bye" 的訊息。


最後程式結束執行前,直譯器同樣主動呼叫最後建立物件解構子,完全釋放所使用的記憶體空間。


中英文術語對照
建構子constructor
物件object
直譯器interpreter
方法method
解構子destructor
改寫override
變數variable






沒有留言: