我只是有一个令人费解的问题abou在python中的类属性。 考虑下面的下面的类:python类属性:意外的行为
class A:
__lst = []
def add(self, str):
self.__lst.append(str)
print len(self.__lst)
我试图使两个实例x和y和我得到这个:
>>> x = A()
>>> x.add('aaa')
1
>>> x.add('bbb')
2
>>> y = A()
>>> y.add('aaa')
3
>>> y.add('bbb')
4
我期待的是y的实例将拥有的单独副本列表属性,但似乎即使您使用另一个对象将元素添加到列表中,列表也会变大。这很奇怪。
有没有人可以在这个问题上给我启发? 提前感谢您的帮助。 :-)
“我期待y的实例将有一个单独的列表属性副本” - 您为什么期望这样?这是一个班级属性(你使用这个术语后似乎知道的一个概念),当然它属于班级,而不是实例。 – millimoose
可能是因为Python不只是具有不同语法的java –
对不起,我指的是属性本身,这意味着实例x的列表属性与实例y的列表属性无关。 – rbolante