有人可以解释为什么 Python 会执行以下操作吗?
>>> class Foo(object):
... bar = []
...
>>> a = Foo()
>>> b = Foo()
>>> a.bar.append(1)
>>> b.bar
[1]
>>> a.bar = 1
>>> a.bar
1
>>> b.bar
[1]
>>> a.bar = []
>>> a.bar
[]
>>> b.bar
[1]
>>> del a.bar
>>> a.bar
[1]
这很困惑!
请您参考如下方法:
这是因为按照您的编写方式,bar 是类变量而不是实例变量。
要定义一个实例变量,在构造函数中绑定(bind)它:
class Foo(object):
def __init__(self):
self.bar = []
请注意,它现在属于 Foo 的单个实例 (self) 而不是 Foo 类,您将看到结果您在分配给它时期望。
