嵌套对象时无限递归

时间:2016-08-15 21:44:47

标签: python python-3.x recursion

首先我要提一下我对python很新。我试图将Container放在Container中,但是当我这样做时,我会得到无限数量的递归容器。

class Container(Drawable):

    content = []

    # some more code    

    def append(self, obj):
        print(obj.content)
        self.content.append(obj)
        print(self.content[0].content) 

Page类似于Container。我添加了一些元素

pa = Page()
ca = Container(color="red")
cb = Container(color="blue")
ca.append(cb)
pa.append(ca)

追加,内部容器打印以下内容,这已经不正确,因为它们都应该是相同的

[]
[<src.test.container.Container object at 0x013550D0>]

我用这种方法打印出来

class SomeClass():

    def __init__(self, page):

        self.print_content(page, 0)


    def print_content(self, parent, depth):
        depth += 1
        for obj in parent.content:

            print((str(depth).rjust(depth, ' ') + " " + str(obj)).rjust(depth, ' '))

            if(depth > 5): # to stop infinite recursion in print
                return
            self.print_content(obj, depth)

我得到以下内容,这没有任何意义。我从来没有在内容中添加 ca 作为内容,但是当我追加它时就会发生。

1 Container [color=red ]
 2 Container [color=blue ]
  3 Container [color=blue ]
   4 Container [color=blue ]
    5 Container [color=blue ]
     6 Container [color=blue ]

知道为什么会这样吗?如果我将两个容器附加到页面上它没问题,但是一旦我嵌套,它就会变成无限递归。此外,所有蓝色的容器都是相同的(地址)。我觉得这是一个明显的错误,但我无法弄清楚

0 个答案:

没有答案