next up previous contents index
Next: Special methods for Up: Special method names Previous: Special methods for

Special methods for attribute access

The following methods can be used to change the meaning of attribute access for class instances.

__getattr__(self, name)
Called when an attribute lookup has not found the attribute in the usual places (i.e. it is not an instance attribute nor is it found in the class tree for self). name is the attribute name.  

Note that if the attribute is found through the normal mechanism, __getattr__ is not called. (This is an asymmetry between __getattr__ and __setattr__.) This is done both for efficiency reasons and because otherwise __getattr__ would have no way to access other attributes of the instance. Note that at least for instance variables, __getattr__ can fake total control by simply not inserting any values in the instance attribute dictionary.  

__setattr__(self, name, value)
Called when an attribute assignment is attempted. This is called instead of the normal mechanism (i.e. store the value as an instance attribute). name is the attribute name, value is the value to be assigned to it.  

If __setattr__ wants to assign to an instance attribute, it should not simply execute self.name = value --- this would cause a recursive call. Instead, it should insert the value in the dictionary of instance attributes, e.g. self.__dict__[name] = value.  __dict__

__delattr__(self, name)
Like __setattr__ but for attribute deletion instead of assignment.  



guido@cwi.nl