如何在python中实现嵌套对象的递归打印?

时间:2012-02-11 15:53:46

标签: python inheritance recursion

我正在尝试学习python,我不知道为什么最后一个语句导致无限递归调用。有人可以解释

class Container:
    tag = 'container'
    children = []

    def add(self,child):
        self.children.append(child)

    def __str__(self):
        result = '<'+self.tag+'>'
        for child in self.children:
            result += str(child)
        result += '<'+self.tag+'/>'
        return result

class SubContainer(Container):
    tag = 'sub'

c = Container()
d = SubContainer()
c.add(d)
print(c)

1 个答案:

答案 0 :(得分:8)

由于您未指定self.childrenchildren字段将在Container的所有实例之间共享。

您应该删除children = []并在__init__中创建它:

class Container:
    tag = 'container'

    def __init__(self):
        self.children = []
[...]