Python淺復制中對象生存周期實例分析
本文實例講述了Python淺復制中對象生存周期。分享給大家供大家參考,具體如下:
Python的淺復制以及深復制我了解的并不多,我不清楚shutil中的copy1和copy2是不是算是淺復制和深復制?這兩個操作,一個是文件屬性重建,還有一個是文件屬性不變。不知道對象的復制是否可以以此類比?
在復制之前,為了能夠觀看一下GC的執(zhí)行,定義一個特殊的類和對象。測試代碼如下:
class Demo: def __del__(self): print("Removing{0}".format(id(self))) x = Demo() del x
程序執(zhí)行結果如下:
E:\01_workspace\02_programme_language\03_python\03_OOP\2017\08>pythoncopy1.py
Removing1772226785520
接下來構造淺復制的例子:
>>>obj_list1 = [Demo(),Demo()] >>>obj_list2 = obj_list1[:] >>> del obj_list1 >>> del obj_list2 Removing1902510644416 Removing1902510644360
從上面的結果看,第一次del并沒有觸發(fā)對象銷毀的方法執(zhí)行。這是在交互界面中進行調試出現(xiàn)的結果,如果代碼是寫到一個具體的文件中,那么程序執(zhí)行的結果有可能不同。當所有的語句都寫到同一個文件中的時候,文件中的對象作用域會有輕微的調整。這是值得我們注意的。
另一種常見的淺復制方法:
>>> o1 =o2 = Demo() >>> del o1 >>> del o2 Removing1902510136568
更多關于Python相關內容感興趣的讀者可查看本站專題:《Python數據結構與算法教程》、《Python字典操作技巧匯總》、《Python加密解密算法與技巧總結》、《Python編碼操作技巧總結》、《Python函數使用技巧總結》、《Python字符串操作技巧匯總》及《Python入門與進階經典教程》
希望本文所述對大家Python程序設計有所幫助。
相關文章
python如何用matplotlib創(chuàng)建三維圖表
這篇文章主要介紹了python如何在matplotlib中創(chuàng)建三維圖表,幫助大家更好的利用python進行數據分析,感興趣的朋友可以了解下2021-01-01從零開始學Python第八周:詳解網絡編程基礎(socket)
本篇文章主要介紹了從零開始學Python第八周:詳解網絡編程基礎(socket) ,具有一定的參考價值,有興趣的可以了解一下。2016-12-12如何用Python實現(xiàn)簡單的Markdown轉換器
這篇文章主要介紹了如何用Python實現(xiàn)簡單的Markdown轉換器,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-07-07