Classes are Python’s main OOP tool. They support multiple instances, attribute inheritance, and operator overloading.
Classes and Instances
Class objects provide default behavior
classstatement creates a class object and assigns it to a name.
classstatements create class attributes, which export object state and behavior.
Class methods are nested
defs, with special first arguments to receive the instance.
Instance objects are generated from classes
Calling a class object like a function makes a new instance object.
Each instance object inherits class attributes and gets its own attribute namespace.
Assignments to attributes of the first argument (e.g,
self.X = V) in methods create per-instance attributes.
Inheritance happens at attribute qualification time: on
objectis a class or instance.
Classes inherit attributes from all classes listed in their class statement header line (superclasses). Listing more than one means multiple inheritance.
Instances inherit attributes from the class from which they are generated, plus all that class’s superclasses.
Inheritance searches the instance, then its class, then all accessible superclasses (depth-first, and left-to-right), and uses the first version of an attribute name found.
By default, all attribute names in modules and classes are visible everywhere. Special conventions allow some limited data hiding, but are mostly designed ...