此问题已经在这里有了答案:
我有两个班级,如下:
class foo:
def __init__(self):
self.val = 10
class foo2:
def __init__(self):
self.val = 1000
当我将foo类的实例复制到变量中,然后更改foo类的值时,变量将发生变化。这是因为foo是引用类型,并且foo中的每个更改也会更改其实例。
f = foo()
b = f
print(b.val)
f.val = 20
print(b.val)
>> 10
>> 20
但是如果我将类foo2复制到类foo中,变量b不会更改为1000。对此的解释是什么?
f = foo2()
print(f.val)
print(b.val)
>> 1000
>> 20
是此行:
b = f
您尚未创建f
对象的copy,已为同一f
对象创建了两个不同的引用。更改为任何一个都会更改两者,因为它们是same对象。