假設我有一個具有某個變量foo.x的類Class的實例foo。現在我想製作一份foo的副本:Python中的類的副本
bar = foo
當我現在改變bar.x時,這也改變了foo.x.我如何獲得foo副本,我可以在不更改原始foo的情況下更改所有內容?創建Class的新實例不是一種選擇,因爲我需要它在foo已經存在的狀態。
假設我有一個具有某個變量foo.x的類Class的實例foo。現在我想製作一份foo的副本:Python中的類的副本
bar = foo
當我現在改變bar.x時,這也改變了foo.x.我如何獲得foo副本,我可以在不更改原始foo的情況下更改所有內容?創建Class的新實例不是一種選擇,因爲我需要它在foo已經存在的狀態。
您需要使用模塊拷貝。
bar = copy.deepcopy(foo)
您可以使用deepcopy
:
bar = deepcopy(foo)
巴= copy.copy(富)#使FOO的淺表副本
巴= copy.deepcopy(富)#使FOO的深層副本
拷貝(X) 對任意Python對象進行淺拷貝操作。
deepcopy(x,memo = None,_nil = []) 對任意Python對象執行深度複製操作。
請注意,您也可以定製(知道你是否真的需要這一點)行爲實現自己的拷貝方式如下:
from copy import copy
class d(object):
def __copy__(self):
newd = d()
newd.x = self.x+1
return newd
foo = d()
foo.x = 11
a = copy(d)
print a.x, foo.x
不是我正在尋找,但看起來很有趣。謝謝! –
@Till B - 不用客氣,我發佈了它,這樣你就可以有更多的選擇來做你想做的事情,所以你可以自定義複製任何你想要的方式。 –
你需要一個新的實例是肯定的,因爲副本是一個新的實例。 .. – digEmAll