1

ツリー構造を作成するノード クラスを作成しようとしています。メソッド「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>]

一方、2 番目の「print」行は空の配列を返す必要があります。

4

1 に答える 1

4

デフォルトのパラメーター値は、すべての子を呼び出すたびに使用されるchildren = []単一のリスト オブジェクトを関数に割り当てます。これはよくある間違いです。代わりに、関数自体で作成します。__init__children__init__

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
 # ...
于 2013-10-12T02:53:05.717 に答える