Skip to main content
 首页 » 编程设计

python之类里面奇怪的列表行为

2025年05月04日19webabcd

我写了一个类,它有一个列表作为变量。我有一个添加到该列表的函数和一个输出该列表的函数。

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 的,犯了同样的错误,一开始我也很困惑。