在python中将节点插入到树中

在python中将节点插入到树中,python,arrays,recursion,tree,append,Python,Arrays,Recursion,Tree,Append,我试图编写一个节点类来创建树结构。似乎有 当我试图用“addChild”方法将子节点添加到根节点时出现了一些问题,因为子节点似乎在其子节点列表中。我不知道为什么,所以非常感谢你的帮助 class node(object): def __init__(self, name, x, y, children = []): self.name = name self.children = children self.x = x se

我试图编写一个节点类来创建树结构。似乎有 当我试图用“addChild”方法将子节点添加到根节点时出现了一些问题,因为子节点似乎在其子节点列表中。我不知道为什么,所以非常感谢你的帮助

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>]
[]
[]

而第二个“print”行应该返回一个空数组。

默认参数值
children=[]
将一个列表对象分配给
\uuu init\uu
函数,然后在每次调用all children时使用该函数。相反,在
\uuuu init\uuuu
函数本身中创建
子项

class node(object):
    def __init__(self, name, x, y, children=None):
        self.name = name
        self.children = [] if children is None else children
        self.x = x
        self.y = y
 # ...

默认参数值
children=[]
将单个列表对象分配给
\uuuu init\uuu
函数,然后在每次调用all children时使用该函数。相反,在
\uuuu init\uuuu
函数本身中创建
子项

class node(object):
    def __init__(self, name, x, y, children=None):
        self.name = name
        self.children = [] if children is None else children
        self.x = x
        self.y = y
 # ...

每个节点都引用相同的列表。请参见每个节点都引用相同的列表。看见