我只是有一個令人費解的問題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