如果我有一个类obj,并且我创建了该类的实例,那么吧
bar = obj(bar)
然后print foo
输出foo
设置foo = bar
然后设置foo.change(foo)
以便print foo == 'foo'
最后我做print foo, bar
并希望看到foobar
,但我明白了
foofoo
。我怎样才能实现我想要的目标?
我已经尝试过做foo = copy.copy(bar)但是如果我换了一个就会改变它们。 我甚至试图设置foo = obj(bar.attribute)但仍然没有。
顺便说一下,我创造的真正的课程我只是这样做,因为我不想让事情更复杂
答案 0 :(得分:1)
您需要使用copy.deepcopy()
制作深副本; copy.copy()
仅生成浅副本:
import copy
foo = copy.deepcopy(bar)
浅拷贝只是重新创建实例但共享所有属性;如果这些属性是可变的,foo
和bar
都会看到变化;只有当你对bar
上的属性进行反弹时foo
才会看到相同的变化。
copy.deepcopy()
递归地创建任何可变的新副本,从而产生一个全新的结构。