Classes provide a means of bundling data and functionality together. Creating a new class creates a new type of object, allowing new instances of that type to be instance in programming definition. Each class instance can have attributes attached to it for maintaining its state. Compared with other programming languages, Python’s class mechanism adds classes with a minimum of new syntax and semantics.
Python classes provide all the standard features of Object Oriented Programming: the class inheritance mechanism allows multiple base classes, a derived class can override any methods of its base class or classes, and a method can call the method of a base class with the same name. As in Modula-3, there are no shorthands for referencing the object’s members from its methods: the method function is declared with an explicit first argument representing the object, which is provided implicitly by the call. As in Smalltalk, classes themselves are objects. This provides semantics for importing and renaming. Modula-3, built-in types can be used as base classes for extension by the user. I expect that few readers have heard of it. This is known as aliasing in other languages.
Did not find what they wanted? Try here
Before introducing classes, I first have to tell you something about Python’s scope rules. Class definitions play some neat tricks with namespaces, and you need to know how scopes and namespaces work to fully understand what’s going on. Incidentally, knowledge about this subject is useful for any advanced Python programmer. A namespace is a mapping from names to objects. In a sense the set of attributes of an object also form a namespace.
By the way, I use the word attribute for any name following a dot — for example, in the expression z. Strictly speaking, references to names in modules are attribute references: in the expression modname. In this case there happens to be a straightforward mapping between the module’s attributes and the global names defined in the module: they share the same namespace! Attributes may be read-only or writable. In the latter case, assignment to attributes is possible.