class cls():
A = []
a = cls()
b = cls()
a.A.append("a")
print(b.A)
我在python 3.4上运行它。 但是我看到它打印了一个字符串""。
我无法理解为什么会这样。 a与b不同,但为什么它们共享一个变量A?
答案 0 :(得分:2)
您已为班级分配了一个变量。它仅对所有实例都存在一次(只要您通过引用使用它,.append
会这样做。)
你真正想要的是一个实例变量:
class cls():
def __init__(self):
self.A = []
a = cls()
b = cls()
a.A.append("a")
print(b.A)
此外,cls
不应该用作类的名称 - 使用CamelCase
名称,另外cls
只应该与元类或类方法一起使用(您不太可能需要)这些中的任何一个)。