A class instance is created by calling a class object (see type-
class). A class instance has a namespace implemented as a
dictionary which is the first place in which attribute
references are searched. When an attribute is not found there,
and the instance’s class has an attribute by that name, the
search continues with the class attributes. If a class attribute
is found that is a user-defined function object or an unbound
user-defined method object whose associated class is the class
(call it C) of the instance for which the attribute reference
was initiated or one of its bases, it is transformed into a
bound user-defined method object whose im_class attribute is C
and whose im_self attribute is the instance. Static method and
class method objects are also transformed, as if they had been
retrieved from class C; see type-class. See section [3.4.2] for
another way in which attributes of a class retrieved via its
instances may differ from the objects actually stored in the
class’s __dict__. If no class attribu