El proceso de inicialización de un grupo de clases que comparten un elemento primario común se puede dividir en tres partes: parte común1, parte de clase específica, parte común2. Actualmente las dos primeras partes se llama desde la función __init__ de cada clase hija, pero la segunda parte común tiene que ser llamado por separado Por ejemplo:¿Cómo realizar tareas comunes posteriores a la inicialización en clases heredadas de Python?
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
¿Hay una manera de no tener que llamar finalizeInitialization() ?
EDITAR uno puede transferir la llamada a finalizeInitialization() en __init__ de Subclass1 (como en S.Lott's answer). Esto hace la vida más fácil, pero aún hay que recordar completar la inicialización, esta vez dentro del "constructor". De cualquier manera, no hay forma de forzar la inicialización completa, que es lo que estoy buscando.
Gracias, pero vea mi edición para obtener una aclaración –
Tomo la versión 2. Gracias –