We're back after a server migration that caused effbot.org to fall over a bit harder than expected. Expect some glitches.

The __getattribute__ method

__getattribute__(self, name)

This method is only used for new-style classes.

Called unconditionally to implement attribute accesses for instances of the class. If the class also defines __getattr__, the latter will not be called unless __getattribute__ either calls it explicitly or raises an AttributeError. This method should return the (computed) attribute value or raise an AttributeError exception.

In order to avoid infinite recursion in this method, its implementation should always call the base class method with the same name to access any attributes it needs, for example, self.__getattribute__(self, "name") instead of self.name.