Metaclase para invocación automática del "constructor" de la superclase
Esta receta incluye la implementación “comentada” de una metaclase Python para conseguir que el constructor de la superclase se invoque automáticamente.
Introducción
Para una mejor comprensión y máximo aprovechamiento, se recomienda al lector no iniciado en las metaclases, leer la receta Ahí va la virgen! Metaclases! antes de proceder con esta.
Invocación automática del “constructor” de la superclase
Cuando empezaste con Python quizá te sorprendió que cuando heredas una clase y sobrecargas el método __init__
, no se invoque al __init__
de su superclase. Es decir:
Pues bien, la siguiente metaclase permite que al crear una instancia de B, se invoque también el método __init__
de A de forma automática:
Si ahora pruebas el ejemplo anterior, haciendo que A utilice la metaclase AutoSuper:
Señalar que esta solución no es transitiva. La metaclase hace que se invoquen los __init__
de las superclases de esa clase. Es decir, sólo las superclases inmediatas, no se invocan los __init__
de ancestros indirectos.