我需要下面的代码解释
class Test():
a_variable = []
def add(self, value):
self.a_variable.append(value)
def print(self):
print(self.a_variable)
a = Test()
b = Test()
a.add(1)
b.print()
输出
[1]
问题:
a_variable
共享给其他实例?注意:我正在环境中使用python 3.7.4并在Windows 10上运行
[通常,当您尝试使用实例设置类属性时,会创建一个遮盖该类属性的对象属性。例如,如果您执行以下操作:
def add(self, value):
self.a_variable = value
您最终将得到:
[a.print()
将打印1
[b.print()
将打印[]
通过使用.append()
,您获取对类属性(即Test.a_variable
)的引用,并对其进行mutate。这就是为什么它会反映到类的所有实例。