国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python對象中__del__方法起作用的條件詳解

2020-02-15 23:30:36
字體:
來源:轉載
供稿:網友

對象的__del__是對象在被gc消除回收的時候起作用的一個方法,它的執行一般也就意味著對象不能夠繼續引用。

示范代碼如下:

class Demo:def __del__(self):  print("calling __del__") obj = Demo()del obj

程序執行結果如下:

grey@DESKTOP-3T80NPQ:/mnt/e/01_workspace/02_programme_language/03_python/03_OOP/2017/08$python del_method.pycalling __del__

但是,這并不是讓__del__執行的唯一方式。其實,這個方法也可以直接調用。測試代碼如下:

class Demo:def __init__(self):  print("calling __del__")obj = Demo()obj.__del__()

程序執行結果:

grey@DESKTOP-3T80NPQ:/mnt/e/01_workspace/02_programme_language/03_python/03_OOP/2017/08$python del_method.pycalling __del__ 

但是,這樣的執行很多時候并不能夠保證垃圾回收的正常執行。

如下代碼:

grey@DESKTOP-3T80NPQ:/mnt/e/01_workspace/02_programme_language/03_python/03_OOP/2017/08$python del_method.pycalling __del__calling __del__

執行結果:

grey@DESKTOP-3T80NPQ:/mnt/e/01_workspace/02_programme_language/03_python/03_OOP/2017/08$python del_method.pycalling __del__calling __del__

推測:上面的刪除方法觸發了兩次刪除,但是由于引用關系,刪除銷毀其實沒有實現。

修改代碼驗證如下:

class Demo:def __del__(self):  print("calling __del__")  del self obj = Demo()obj.__del__()print(id(obj))

執行結果:

grey@DESKTOP-3T80NPQ:/mnt/e/01_workspace/02_programme_language/03_python/03_OOP/2017/08$python del_method.pycalling __del__140726800222040calling __del__

從上面看來,其實主要還有對對象的引用,這個銷毀的動作還是需要等待對象引用沒有了以后才能夠完成。進一步驗證代碼:

class Demo:def __del__(self):  print("calling __del__")  del self obj = Demo()obj.__del__()print(id(obj))print(id(obj))

執行結果:

grey@DESKTOP-3T80NPQ:/mnt/e/01_workspace/02_programme_language/03_python/03_OOP/2017/08$python del_method.pycalling __del__140568015406936140568015406936calling __del__

從上面結果看,猜測還是準確的。

以上這篇Python對象中__del__方法起作用的條件詳解就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持武林站長站。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 昭觉县| 安溪县| 宁国市| 鹤庆县| 紫阳县| 方城县| 临湘市| 巴青县| 手游| 克什克腾旗| 修文县| 库伦旗| 随州市| 太湖县| 花垣县| 宁陵县| 宣恩县| 长子县| 蒲江县| 威宁| 达州市| 鄂州市| 金昌市| 炎陵县| 抚松县| 龙山县| 竹溪县| 开阳县| 洪雅县| 获嘉县| 岫岩| 行唐县| 云霄县| 务川| 九龙坡区| 鄢陵县| 息烽县| 贺兰县| 滨州市| 福海县| 梁平县|