Python 的析構方法 __del__() 是如何工作的?
__del__() 方法被稱為析構方法。當物件被垃圾回收時,它會被呼叫,這發生在對該物件的所有引用都被刪除之後。
在一個簡單的例子中,這可能發生在你刪除一個變數之後,例如 del x,或者如果 x 是一個區域性變數,則在函式結束之後。特別是,除非存在迴圈引用,否則 CPython(標準 Python 實現)將立即進行垃圾回收。
Python 垃圾回收的唯一特性是它發生在所有引用都被刪除之後,所以這並不一定會在之後立即發生,甚至可能根本不會發生。
更重要的是,變數可能由於許多原因而存在很長時間,例如,傳播的異常或模組自省可以使變數引用計數大於 0。此外,變數可以是迴圈引用的一部分——啟用垃圾回收的 CPython 會破壞大多數(但不是全部)這樣的迴圈,而且即使那樣也只是週期性地進行。
__del__ 有一些有效的用例:例如,如果物件 X 引用 Y,並且還在全域性快取中保留 Y 引用的副本 (cache['X -> Y'] = Y),那麼讓 X.__del__ 也刪除快取條目將是很禮貌的。
如果你知道解構函式提供了必要的清理工作,你可能希望直接呼叫它,x.__del__()。
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP