[英]Appending to a class instance attribute in python
我有一个 class 个实例的列表,我想将 append 个单独的项目分配给每个实例的属性。 但是,我最终将每个项目附加到列表中每个实例的属性。 示例代码如下:
class example:
def __init__(self):
example.xlist = []
classes = [example(), example(), example()]
i=0
for instnce in classes:
instnce.xlist.append(i)
i+=1
print("1st list:", classes[0].xlist)
print("2nd list:", classes[1].xlist)
print("3rd list:", classes[2].xlist)
我希望 output 是:
1st list: [0]
2nd list: [1]
3rd list: [2]
但我得到:
1st list: [0, 1, 2]
2nd list: [0, 1, 2]
3rd list: [0, 1, 2]
关于正在发生的事情的任何想法/我可以改变什么以获得所需的 output?
当您创建新列表时,问题出在您的构造函数中。 您应该尝试使用self.xlist
而不是创建example.xlist
。 Python中的self
关键字,指的是具体实例,而不是一般的object。
如果我们将此更改应用于您的示例代码,我们将得到:
class example:
def __init__(self):
self.xlist = []
classes = [example(), example(), example()]
i=0
for instnce in classes:
instnce.xlist.append(i)
i+=1
print("1st list:", classes[0].xlist)
print("2nd list:", classes[1].xlist)
print("3rd list:", classes[2].xlist)
此代码生成正确的 output。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.