我遇到了一些相当奇怪的行为。Python 3.5奇怪地处理列表
class Example:
test = []
def __init__(self):
print(self.test)
self.test.append(0)
ex1 = Example()
ex2 = Example()
ex3 = Example()
我期望这个输出每一次[]键,不过,我得到:
[]
[0]
[0, 0]
这是什么魔法?你能帮我理解吗?
谢谢,你!
编辑: 嘿,谢谢你的快速解答。
只是为了澄清,如果“测试”是静态的,那么为什么我没有注意到这个问题,当我更换“self.test.append(0)”与“self.test = [0]”?
'test'是一个* class *属性,而不是每个* instance *的属性。不要试图“宣布”这样的成员;你必须在'__init__'中创建它们。 –
«为什么当我代替我没有注意到这种行为‘self.test.append(0)’与‘self.test = [0]’?»因为结合新对象实例属性'self.test',这将影响'Example.test'类属性。而'self.test.append(0)'只是改变现有的对象。 –