En la respuesta de Anon:
"Si necesita hacer algo de super __init__además de lo que se está haciendo en la clase actual __init__, debe llamarlo usted mismo, ya que eso no sucederá automáticamente"
Es increíble: está redactando exactamente lo contrario del principio de herencia.
No es que "algo de super __init__ (...) no suceda automáticamente" , es que sucedería automáticamente, pero no sucede porque la clase base ' __init__es anulada por la definición de la clase derivada__init__
Entonces, ¿POR QUÉ definir una "clase derivada" __init__, ya que anula lo que se pretende cuando alguien recurre a la herencia?
Es porque uno necesita definir algo que NO se hace en la clase base ' __init__, y la única posibilidad de obtener eso es poner su ejecución en una __init__función de clase derivada' .
En otras palabras, uno necesita algo en la clase base ' __init__además de lo que se haría automáticamente en la clase base' __init__si este último no fuera anulado.
NO al contrario.
Entonces, el problema es que las instrucciones deseadas presentes en la clase base ' __init__ya no se activan en el momento de la instanciación. Para compensar esta inactivación, se requiere algo especial: llamar explícitamente a la clase base ' __init__, para MANTENER , NO AGREGAR, la inicialización realizada por la clase base' __init__. Eso es exactamente lo que se dice en el documento oficial:
De hecho, un método de anulación en una clase derivada puede querer extender en lugar de simplemente reemplazar el método de la clase base del mismo nombre. Hay una manera simple de llamar directamente al método de la clase base: simplemente llame a BaseClassName.methodname (self, argumentos).
http://docs.python.org/tutorial/classes.html#inheritance
Esa es toda la historia:
cuando el objetivo es MANTENER la inicialización realizada por la clase base, que es pura herencia, no se necesita nada especial, solo se debe evitar definir una __init__función en la clase derivada
cuando el objetivo es REEMPLAZAR la inicialización realizada por la clase base, __init__debe definirse en la clase derivada
cuando el objetivo es AGREGAR procesos a la inicialización realizada por la clase base, se __init__ debe definir una clase derivada que comprenda una llamada explícita a la clase base__init__
Lo que siento asombroso en la publicación de Anon no es solo que él exprese lo contrario de la teoría de la herencia, sino que ha habido 5 tipos pasando por alto sin votar, y además no ha habido nadie que reaccione en 2 años en un hilo cuyo tema interesante debe leerse con relativa frecuencia.
objectfue un error tipográfico. Pero ahora ni siquiera tiene elsupertítulo de su pregunta se refiere.