如何创建类对象的动态列表?

时间:2018-11-11 20:25:00

标签: python list class object

当尝试向我的cells类对象列表中添加新元素时,我注意到所有列表值都是所添加项的最后一个值。我使用追加来添加新项目。如何获得正确答案?

class cells:
  x=0

from cells import cells
a=[]

a.append(hucre)
a[0].x=10

a.append(hucre)
a[1].x=20

a.append(hucre)
a[2].x=30

print(a[0].x) #30 where must give me 10
print(a[1].x) #30 where must give me 20
print(a[2].x) #30 where must give me 10

2 个答案:

答案 0 :(得分:0)

这是因为在您的类中,您在类的主体内定义了x,而不是__init__方法。这使它成为一个类变量,根据the documentation,该类的所有实例都相同。

答案 1 :(得分:0)

您应该创建类cells的新实例,而不更改cells的类cells.x的属性。

因此,您应该为类__init__定义cells方法(有关__init__linklink的更多信息):

class cells:
    def __init__(self, x=None):  # default value of x is None
        self.x = x


hucre = cells()  # instantiating new cells object
print(hucre.x)

Out: 
None

将值添加到列表:

a = []   
a.append(hucre)
a[0].x = 10
print(a[0].x)

Out: 
10

创建新对象,否则将更改第一个对象:

hucre = cells(20)
a.append(hucre) # here .x is 20 already so you need no assignment 
print(a[1].x)

Out: 
20

...等等。您可以附加在parens中实例化的对象:

a.append(cells(30))
print(a[2].x)

Out: 
30