Я строю простое дерево узлов в 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 в том же классе (который должен вызываться для родителя, а не для строящегося узла):
def addChild(self, child):
self.children.append(child)
Вот вывод:
foo []
foo [foo]
Две строки вывода должны быть одинаковыми, поскольку строка кода между ними должна влиять только на родительский узел, а не на строящийся в данный момент узел.
Что я делаю не так?