Python中的深拷貝被廣泛應用于類的對象中。深拷貝的概念是在拷貝對象時,對于拷貝對象中非基本類型的屬性,會生成新的對象,而不是簡單地拷貝引用。下面我們看看在Python中如何使用深拷貝。
import copy class Myclass: def __init__(self): self.list = [1,2,3] self.dict = {'a':1,'b':2,'c':3} obj1 = Myclass() print("原始對象: ", obj1.__dict__) #進行深拷貝 obj2 = copy.deepcopy(obj1) #修改原始對象中的屬性 obj1.list[1] = 4 obj1.dict['b'] = 5 print("拷貝對象: ", obj2.__dict__)
代碼功能:首先定義了一個Myclass類,在該類中定義了一個list屬性和一個dict屬性。接著我們創建了一個Myclass對象obj1,并輸出其__dict__屬性。接著,我們對obj1進行了深拷貝,得到了obj2。然后修改了obj1的list和dict屬性,最后輸出obj2的__dict__屬性。運行結果如下:
原始對象: {'list': [1, 2, 3], 'dict': {'a': 1, 'b': 2, 'c': 3}} 拷貝對象: {'list': [1, 2, 3], 'dict': {'a': 1, 'b': 2, 'c': 3}}
可以看到,使用深拷貝得到的拷貝對象是一份和原始對象互不干擾的對象。這是由于深拷貝生成了新的對象。另外,需要注意的是,深拷貝有可能會導致遞歸循環,將會導致程序無法結束。此時,需要手動將循環終止。