0

関連オブジェクトのツリーを管理する単純なクラスを作成しました。

class node(object):
    children = list([])

    def __init__(self, ID, *children):
        self.ID = ID
        for c in children:
            self.children.append(c)

    def add(self, *children ):
        for c in children:
            self.children.append(c)

    def __str__(self):
        return self.ID
    def __repr__(self):
        print self.ID, len(self.children)


root = node('1')
root.add( node('1.1', node('1.1.1')),
          node('1.2'))

for c in root.children:
    print c

私は得ています:

1.1.1
1.1
1.2

ただし、1.1 と 1.2 だけを期待しています。私の間違いは何ですか?

ありがとう、ドミトリー

4

2 に答える 2

3

self.childrennode.childrenクラス変数であるを参照しています。クラスのすべてのインスタンスで共有されるリストのインスタンスは 1 つだけです。

インスタンス変数にする必要があります。

class Node(object):
    def __init__(self, id, *children):
        self.children = []

また、__str__and__repr__は特定の形式に従う文字列を返す必要があります。

于 2013-08-03T01:27:22.383 に答える
1

メソッドchildren = list([])内に次のように配置します。__init__

def __init__(self, ID, *children):
        self.ID = ID
        self.children = []
        for c in children:
            self.children.append(c)
于 2013-08-03T01:30:17.340 に答える