Le processus d'initialisation d'un groupe de classes partageant un parent commun peut être divisé en trois parties: partie commune1, partie spécifique à la classe, partie commune2. Actuellement, les deux premières parties sont appelées de la fonction __init__ de chaque classe enfant, mais la deuxième partie commune doit être appelé séparément Par exemple:Comment effectuer des tâches de post-initialisation courantes dans des classes Python héritées?
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
est-il un moyen de ne pas avoir à appeler finalizeInitialization() ?
EDIT on peut transférer l'appel à finalizeInitialization() dans __init__ de Subclass1 (comme dans S.Lott's answer). Cela rend la vie plus facile, mais il faut quand même penser à terminer l'initialisation, cette fois-ci à l'intérieur du «constructeur». Dans les deux cas, il n'y a aucun moyen d'imposer une initialisation complète, ce que je recherche.
Merci, mais s'il vous plaît voir mon edit pour une clarification –
Je prends la version 2. Merci –