您的课程没有__init__()
,因此在实例化该属性时,该属性atoms
不存在。你不得不做C.setdata('something')
这样C.atoms
变为可用。
>>> C = Residues()
>>> C.atoms.append('thing')
Traceback (most recent call last):
File "<pyshell#84>", line 1, in <module>
B.atoms.append('thing')
AttributeError: Residues instance has no attribute 'atoms'
>>> C.setdata('something')
>>> C.atoms.append('thing') # Now it works
>>>
与Java之类的语言不同,在Java中您可以在编译时知道对象将具有哪些属性/成员变量,而在Python中,您可以在运行时动态添加属性。这也意味着同一类的实例可以具有不同的属性。
为了确保始终有一个atoms
列表(除非您将其弄乱了,否则这是您自己的错),可以添加一个构造函数:
def __init__(self):
self.atoms = []