Python打印所有子节点时的无限递归
我正在尝试创建一个树形结构,并且想要实现一个递归的“printAll”方法。
我的代码是:
class Node(object):
def __init__(self, children=[], tag=None):
self.children = children
self.tag = tag
def appendChild(self, child):
self.children.append(child)
def getChildren(self):
return self.children
def printAll(self):
print self.getChildren()
for child in self.children:
child.printAll()
但是当我运行它的时候,出现了这个错误:“调用Python对象时超出了最大递归深度”。
我猜这可能和在调用子节点的printAll()方法时,把顶层的范围传递给子节点有关,这样就导致了无限循环。非常感谢任何帮助。
1 个回答
2
试着改变你默认的 children
:
class Node(object):
def __init__(self, children=None tag=None):
self.children = children if children is not None else []
self.tag = tag
def appendChild(self, child):
self.children.append(child)
def getChildren(self):
return self.children
def printAll(self):
print self.getChildren()
for child in self.children:
child.printAll()
你可能遇到了一个叫做 “可变默认参数” 的问题。