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