1

再帰的な「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()メソッドを呼び出すときに、最上位のスコープを子に渡すことと関係があると思います。これにより、無限ループが発生します。どんな助けでも大歓迎です。

4

1 に答える 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()

「可変デフォルト引数」の場合があるかもしれません

于 2013-02-20T01:32:06.877 に答える