1. 程式人生 > >關於__del__方法被呼叫的條件

關於__del__方法被呼叫的條件

首先,一個物件可以有多個變數引用,比如定義一個Animal類,首先可以
用 cat =Animal(‘波斯貓’)引用該物件,還可以用cat2=cat,cat3=cat 來多次引用,每有一個變數引用,該物件的引用計數就會+1,這些變數引用相當於物件的多個’靈魂‘,(類似於伏地魔的魂器),當del cat時,只是刪除了Animal(‘波斯貓’)的一個引用,該物件本體還未被刪除,因為他還有其他兩個靈魂cat2,cat3. 當刪除cat2後他還有最後一個cat3靈魂,當刪除最後一個cat3時,__del__方法才會被呼叫,該物件才會被真的刪除!

程式碼如下,自己體會:
試試事實上
執行結果:
在這裡插入圖片描述
可以看到cat,cat2,cat3記憶體地址是相同的,這三個變數指向同一個物件,相當於一個物件的三個’靈魂‘,當最後cat3被刪除了,就觸發了__del__方法,物件也被真正刪除了。

以上