Each Python class definition has an implicit superclass: object.
DDaudalagidhas quoted2 years ago
When we define our own class, object is the superclass.
DDaudalagidhas quoted2 years ago
The superclass of all classes, object, has a default implementation of __init__() that amounts to pass. We aren't required to implement __init__(). If we don't implement it, then no instance variables will be created when the object is created.
DDaudalagidhas quoted2 years ago
Refactoring is better than adding if statements.
DDaudalagidhas quoted2 years ago
"Explicit is better than implicit."
DDaudalagidhas quoted2 years ago
In this example, we factored the __init__() method into the superclass so that a common initialization in the superclass, Card, applies to all the three subclasses NumberCard, AceCard, and FaceCard.
DDaudalagidhas quoted2 years ago
A small domain of static objects may be part of implementing a Strategy or State design pattern. In some cases, we may have a pool of constant objects created in an initialization or configuration file, or we might create constant objects based on command-line parameters.
DDaudalagidhas quoted2 years ago
This can make the Strategy or State design patterns work efficiently by reusing objects from a small, static pool of constants.
DDaudalagidhas quoted2 years ago
We define a function that creates objects of the required classes. We define a class that has methods for creating objects. This is the full factory design pattern, as described in books on design patterns. In languages such as Java, a factory class hierarchy is required because the language doesn't support standalone functions.
DDaudalagidhas quoted2 years ago
The advantage of class definitions in general is to achieve code reuse via inheritance.