gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 08:19:24 26 4
gpt4 key购买 nike

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

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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com