The initialization process of a group of classes that share a common parent can be divided into three parts:
- Common initialization
- Subclass-specific initialization
- Common post-initialization
Currently the first two parts are called from the __init__
method of each child class, but the final post-initialization part has to be called separately, for example
class BaseClass:
def __init__(self):
print 'base __init__'
self.common1()
def common1(self):
print 'common 1'
def finalizeInitialization(self):
print 'finalizeInitialization [common2]'
class Subclass1(BaseClass):
def __init__(self):
BaseClass.__init__(self)
self.specific()
def specific(self):
print 'specific'
if __name__ == '__main__':
s = Subclass1() # Don't forget to finalize the initialization
s.finalizeInitialization() # now the object is fully initialized
Is there a way to not to have to call finalizeInitialization()
? Or one can transfer the call to finalizeInitialization()
into Subclass1
's __init__
(as in S.Lott's answer). This makes the life easier, but still one has to remember to complete the initialization, this time inside the "constructor". Either way there is no way to enforce full initialization, which is what I'm looking for.
BaseClass.__init__
and it will test before the class is fully initialized. – Mitchmitchael