当尝试向我的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
答案 0 :(得分:0)
这是因为在您的类中,您在类的主体内定义了x,而不是__init__
方法。这使它成为一个类变量,根据the documentation,该类的所有实例都相同。
答案 1 :(得分:0)
您应该创建类cells
的新实例,而不更改cells
的类cells.x
的属性。
因此,您应该为类__init__
定义cells
方法(有关__init__
:link,link的更多信息):
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