首頁 >後端開發 >Python教學 >在Python複製中物件生命週期如何使用

在Python複製中物件生命週期如何使用

php中世界最好的语言
php中世界最好的语言原創
2018-04-09 11:56:201880瀏覽

這次帶給大家在Python複製中物件生命週期如何使用,使用Python複製物件生命週期的注意事項有哪些,下面就是實戰案例,一起來看一下。

Python的淺複製以及深複製我了解的並不多,我不清楚shutil中的copy1和copy2是不是算是淺複製和深複製?這兩個操作,一個是檔案屬性重建,還有一個是檔案屬性不變。不知道物件的複製是否可以以此類比?

在複製之前,為了能夠觀看一下GC的執行,定義一個特殊的類別和物件。測試程式碼如下:

class Demo:
    def del(self):
       print("Removing{0}".format(id(self)))
x = Demo()
del x

程式執行結果如下:

E:\01_workspace\02_programme_language\03_python\03_OOP\2017\08>pythoncopy1.py
Removing17722678

#接下來建構淺複製的例子:

>>>obj_list1 = [Demo(),Demo()]
>>>obj_list2 = obj_list1[:]
>>> del obj_list1
>>> del obj_list2
Removing1902510644416
Removing1902510644360
從上面的結果看,第一次del並沒有觸發物件銷毀的方法執行。這是在互動介面中進行偵錯出現的結果,如果程式碼是寫到一個具體的檔案中,那麼程式執行的結果有可能不同。當所有的語句都寫到同一個檔案的時候,檔案中的物件作用域會有輕微的調整。這是值得我們注意的。

另一種常見的淺複製方法:

>>> o1 =o2 = Demo()
>>> del o1
>>> del o2
Removing1902510136568
相信看了本文案例你已經掌握了方法,更多精彩請關注php中文網其它相關文章!

推薦閱讀:

python怎麼逐行讀寫txt檔案

python怎麼批次讀取txt檔案為DataFrame格式

以上是在Python複製中物件生命週期如何使用的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn