我对下面的Python行为感到莫名其妙。为什么第二个和第三个实例(b
,c
,i
)的属性是类属性i
但a
的行为有所不同?为什么更改实例变量也会改变静态变量?
In [47]: class Foo:
...: i=0
...:
In [48]: a = Foo()
In [49]: a.i = 1
In [50]: a.i
Out[50]: 1
In [51]: Foo.i
Out[51]: 0
In [52]: b = Foo()
In [53]: b.i
Out[53]: 0
In [54]: Foo.i is b.i
Out[54]: True
In [55]: Foo.i is a.i
Out[55]: False
In [56]: c = Foo()
In [57]: Foo.i is c.i
Out[57]: True
慎用解释的'int值int'的结果... Python的缓存小整数。虽然在这种情况下,我认为这不会影响你的演示,但也许最好使用一个虚拟类来进行演示。 –