Python: instance has no attribute

前端 未结 1 1807
臣服心动
臣服心动 2020-12-16 12:23

I have a problem with list within a class in python. Here\'s my code :

class Residues:
    def setdata(self, name):
        self.name = name
        self.ato         


        
相关标签:
1条回答
  • 2020-12-16 13:03

    Your class doesn't have a __init__(), so by the time it's instantiated, the attribute atoms is not present. You'd have to do C.setdata('something') so C.atoms becomes available.

    >>> 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
    >>> 
    

    Unlike in languages like Java, where you know at compile time what attributes/member variables an object will have, in Python you can dynamically add attributes at runtime. This also implies instances of the same class can have different attributes.

    To ensure you'll always have (unless you mess with it down the line, then it's your own fault) an atoms list you could add a constructor:

    def __init__(self):
        self.atoms = []
    
    0 讨论(0)
提交回复
热议问题