对象

时间:2018-03-19 17:28:27

标签: python class object instance

我在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

1 个答案:

答案 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

你可以看到它们是不同的。