Intercepting the class instance creation process
There are two special methods concerned with the class instance creation and initialization process. These are __init__()
and __new__()
.
The __init__()
method is the closest to the concept of the constructor found in many object-oriented programming languages. It receives a fresh class instance together with initialization arguments and is responsible for initializing the class instance state.
The special method __new__()
is a static method that is actually responsible for creating class instances. This __new__(cls, [,...])
method is called prior to the __init__()
initialization method. Typically, the implementation of the overridden __new__()
method invokes its superclass version using super().__new__()
with suitable arguments and modifies the instance before returning it.
The __new__()
method is a special-cased static method so there is no need to declare it as a static method using the staticmethod
decorator...