Python - 面向物件程式設計 - __del__() 析構方法
阿新 • • 發佈:2021-08-28
del 語句
Python 提供了 del 語句用於刪除不再使用的變數
語法
del 表示式
刪除變數的栗子
var = "hello" del var print(var) # 輸出結果 print(var) NameError: name 'var' is not defined
變數已經被刪除了,所以無法訪問變數
類的析構方法
- Python 提供了一種機制使得物件被刪除前能夠得到通知
- 物件被刪除時,如果該物件擁有名為__del__ 的方法,該方法在刪除前被呼叫,該方法又被稱為析構方法
語法
class 類: def __del__(self): self.屬性
重點
- 析構方法是物件在被垃圾回收的時候起作用的一個方法
- 它的執行一般也就意味著物件不能夠繼續引用,回收記憶體
- Python 建議不要在物件銷燬時做任何事情,因為物件銷燬的時間難以確定
- 所以析構方法一般無須定義,日哦長使用時無需關心記憶體的分配和釋放,因為此工作都是交給 Python 直譯器來執行
- 一句話:析構方法的呼叫是由直譯器在進行垃圾回收時自動觸發執行的
栗子一
當物件在某個作用域中呼叫完畢,在跳出其作用域的同時析構方法會自動被呼叫,這樣可以釋放記憶體空間
# 析構方法 class PoloBlog: # 構造方法 def __init__(self):print("自動呼叫構造方法") def __del__(self): print("自動呼叫析構方法,釋放記憶體") blog = PoloBlog() print("最後一句程式碼") # 輸出結果 自動呼叫構造方法 最後一句程式碼 自動呼叫析構方法,釋放記憶體
栗子二
主動 del 物件
# 析構方法 class PoloBlog: # 構造方法 def __init__(self): print("自動呼叫構造方法") def __del__(self): print("自動呼叫析構方法,釋放記憶體") blog = PoloBlog() # 主動刪除物件 del blog print("最後一句程式碼") # 輸出結果 自動呼叫構造方法 自動呼叫析構方法,釋放記憶體 最後一句程式碼
- 使用 del 語句,相當於主動呼叫物件的析構方法,會立即刪除物件,並回收記憶體
- 通常是刪除臨時的物件,對那些長期佔用記憶體的臨時物件進行回收