[英]list of objects containing lists of objects
我正在尝试创建对象(元素)的列表,其中每个元素都包含对象(GaussPoints)的列表。 每个元素的GaussPoint的数量可以是可变的,尽管在下面的示例中,为简单起见,每个元素只有一个GaussPoint。
class Element:
gp = []
class GaussPoint:
argument = 0
k = 0
elements = []
for ele in xrange(4):
k = k+1
anEle = Element()
aGP = GaussPoint()
aGP.argument = k
print k
elements.append(anEle)
elements[ele].gp.append(aGP)
print "testing the data structure:"
for ele in xrange(4):
print elements[ele].gp[0].argument
输出为:
1
2
3
4
testing the data structure:
1
1
1
1
我期望的是:
1
2
3
4
testing the data structure:
1
2
3
4
某种程度上,代码不会为每个元素创建一个新的GaussPoints列表,而是附加到相同的列表中。
我显然误解了Python的一些基本知识。 谁能帮忙吗?
您正在将Element.gp
初始化为类变量,而不是实例变量,因此它在所有Element
对象之间共享。 您最终得到1 gp
是长度为4的数组,而不是长度为1的4 gp
s。
而是使用__init__
方法将其初始化,如下所示:
class Element:
def __init__(self):
self.gp = []
您正在将argument
设为类变量,但是由于您为每个实例都重新分配了它,而不是像element
那样对其进行修改,因此它最终保留了您期望的值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.