我在python中的类中遇到列表问题。这是我的代码:
class Residues:
def setdata(self, name):
self.name = name
self.atoms = list()
a = atom
C = Residues()
C.atoms.append(a)
像这样的东西。我收到一个错误说:
AttributeError: Residues instance has no attribute 'atoms'
答案 0 :(得分:29)
您的班级没有__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这样的语言不同,您在编译时知道对象将具有哪些属性/成员变量,在Python中您可以在运行时动态添加属性。这也意味着同一个类的实例可以具有不同的属性。
为了确保你永远拥有(除非你搞砸了它,然后这是你自己的错),你可以添加一个atoms
列表:
def __init__(self):
self.atoms = []