我写了一个类,它有一个列表作为变量。我有一个添加到该列表的函数和一个输出该列表的函数。
class MyClass:
myList = []
def addToList(self, myNumber):
self.myList.append(myNumber)
def outputList(self):
for someNumber in self.myList:
print someNumber
现在由于一些奇怪的原因,如果我声明两个独立的类对象:
ver1 = MyClass()
ver2 = MyClass()
然后在 ver1 上调用 addToList:
ver1.addToList(3)
然后输出ver2的列表:
ver2.outputList()
我得到 3 作为版本 2 列表的输出!发生了什么事?
最佳答案
你的语法错误。您正在使用类静态变量。考虑一下:
class MyClass:
myList = [] # Static variable
def __init__(self):
self.myRealList = [] # Member variable
myList 实际上是 MyClass 定义的一部分,因此不仅可以通过类名看到,还可以通过该类的所有实例看到:
c = MyClass()
c.myList = [1]
print MyClass.myList # will print [1]
您需要在 __init__
构造函数中声明常规“成员变量”。
别难过,我是从 C/C++/C# 世界来到 Python 的,犯了同样的错误,一开始我也很困惑。
关于python - 类里面奇怪的列表行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8221507/