Я пытаюсь написать класс узла для создания древовидной структуры. Кажется, есть проблема, когда я пытаюсь добавить дочерний узел к корневому узлу с помощью метода «addChild», потому что дочерний узел, похоже, сам входит в список своих детей. Я не мог понять, почему, поэтому любая помощь приветствуется.Вставка узла в дерево в python
class node(object):
def __init__(self, name, x, y, children = []):
self.name = name
self.children = children
self.x = x
self.y = y
def addChild(self):
b=node('b', 5, 5)
self.children.append(b)
return
root=node('a',0.,0.)
print root.children
root.addChild()
print root.children
print root.children[0].children
Урожайность:
[<__main__.node object at 0x7faca9f93e50>]
[<__main__.node object at 0x7faca9f93e50>]
В то время как во второй строке "печать" должен был возвращен пустой массив.
Каждый узел, ссылающийся на тот же список. См. Http://stackoverflow.com/questions/1132941/least-astonishment-in-python-the-mutable-default-argument – Tim