我在Python中有以下问题:
a = 1
b = a
b = 2
print(a)
据我了解,b
是一个使用a
值的新变量。因此,当b
的值发生变化时,这不会影响a
。因此,print(a)
应该产生1
。
class Object:
def __init__(self):
self.value = 0
a = Object()
a.value = 1
b = a
b.value = 2
print(a.value)
但是,在这种情况下,a
会打印2
。为什么是这样?如何设置a.value
仍然是1
而不是2
?
答案 0 :(得分:0)
如果您在cmd中运行此功能,请设置b = a
,然后运行:
repr(a)
repr(b)
assert(a == b) # is True
它们位于相同的内存地址。现在运行:
c = Object()
repr(c)
assert(a == c) # is False
assert(b == c) # is False
你可以看到它们是不同的。