繁体   English   中英

在 python 中附加一个 class 实例属性

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM