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.atoms = list()
a = atom
C = Residues()
C.atoms.append(a)
Something like this. I get an error saying:
AttributeError: Residues instance has no attribute 'atoms'
Your class doesn’t have a
__init__(), so by the time it’s instantiated, the attributeatomsis not present. You’d have to doC.setdata('something')soC.atomsbecomes available.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
atomslist you could add a constructor: