我正在用python构建一个简单的节点树。但是,当我的构造函数试图将当前节点添加为给定父节点的子节点时,当前节点也将自身添加为自身的子节点。在
下面是我的构造函数方法(以及children
的创建):
children = []
def __init__(self, parent=None, tag="[ROOT]", attrs=None):
self.parent = parent
self.tag = tag
self.attrs = attrs
print "\n", "self:%s ... children:%s" % (self.tag, self.children)
if parent != None:
parent.addChild(self)
print "self:%s ... children:%s" % (self.tag, self.children)
这是我在同一个类中的addChild方法(应该为父类调用,而不是为当前正在构造的节点调用):
^{pr2}$输出如下:
foo []
foo [foo]
这两行输出应该是相同的,因为它们之间的代码行应该只影响父节点,而不是当前正在构建的节点。在
我做错什么了?在
在类级别初始化子级时,类的每个实例最终共享同一个列表对象。在
请尝试在构造函数中初始化它:
^{pr2}$我怀疑
children
在所有节点对象之间共享;我们看不到声明,所以我不能确切地说你做错了什么。在相关问题 更多 >
编程相关推荐