python中有很多類似__del__(self)這樣的特殊方法,有一些比如__gt__()、__le__()等等從名字就可猜出其大概功能,但有些卻不能這樣這樣隨意猜測(當然也有可能是只有我一個人會這樣),例如這裡即將登場的__del__()和del,以前我以為當del一個物件時,__del__()就會被調用,然而在經歷了一次次的筆試失敗後,我才開始審查起這些較為細微的地方了^_^ !
閒話少說,進入正題!
我們知道del是刪除一個對象,其實準確的說,應該是使該對象的引用數減一。但是注意,並不是每次調用它的時候,__del__()就會調用,因為__del__()是在該對象的引用計數降為0時才會被調用,示例為證:
>>> class C: def __del__(self): print("I'm vanishing...") >>> c = C() >>> b = c # 注意,此时对C()的引用计数为2 >>> del b >>> # 瞧,什么输出都没有,说明__del__()并没调用 >>> del c I'm vanishing... # 引用计数降为0后才被调用 >>>