When an instance of a class is initialized, the super-class state should be
fully initialized before it becomes visible to the subclass.
Calling methods of the subclass in the superclass'
method violates this important invariant.
Do not use methods that are subclassed in the construction of an object.
For simpler cases move the initialization into the superclass'
preventing it being overridden. Additional initialization of subclass should
be done in the
__init__ method of the subclass.
For more complex cases, it is advisable to use a static method or function to manage
Alternatively, avoid inheritance altogether using composition instead.