【发布时间】:2018-03-19 17:28:27
【问题描述】:
我在 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?
【问题讨论】:
-
在第一种情况下,您将 重新绑定
b(即b = ...)到与a绑定的对象不同的对象。在第二种情况下,您正在mutatinga和b都绑定到的对象。 -
你可以使用
copy.deepcopy()Check这个答案。
标签: python class object instance