我去年学习了 Python,并且刚刚通过一个新项目重新开始学习。我一开始就遇到了障碍,经过大量研究文档后,我仍然感到困惑。我不得不相信这很简单,但我找不到。这是问题:
我在文件中设置了以下内容:
class Wrapper(object):
def __init__(self, title=None):
self.header = Thing("HEADER")
if title is not None:
self.header.content.append( Thing("TITLE", content=[str(title)]) )
self.body = Thing("BODY")
self.content = Thing("COMPLETE", content=[self.header, self.body])
class Thing(object):
def __init__(self, name, content=[]):
self.name = name
self.content = content
然后从交互式提示我做:
>>> import things
>>> a = things.Wrapper("This is a title")
现在,我希望在这一点上的body
属性a
将是一个Thing
实例,其名称"BODY"
和content
由一个空列表组成。我惊讶地发现它content
实际上是一个包含相同"TITLE"
实例的列表a.header.content
。
>>> a.header.name
'HEADER'
>>> a.header.content
[<test.Thing object at 0xb752290c>]
>>> a.body.name
'BODY'
>>> a.body.content
[<test.Thing object at 0xb752290c>]
>>> a.body.content[0].name
'TITLE'
>>> a.body.content[0].content
['This is a title']
我一生都无法弄清楚如何a.body.content
以这种方式分配。任何人都可以对此有所了解吗?