¿Por qué permitir devolver un valor desde __init__ con super en Python?
De la documentación de init:
no se puede devolver ningún valor que no sea None en init(); hacerlo causará un TypeError en tiempo de ejecución.
y encontré este código en la clase base extensible de un framework.
Se ejecuta sin errores en tiempo de ejecución.
class Parent():
def <strong>init</strong>(self, x):
self.x = x
return self.x + 10
class Child(Parent):
def <strong>init</strong>(self, x):
y = super(Child, self).<strong>init</strong>(x)
print(y)
c = Child(5)
Investigué un poco y estoy de acuerdo en que sería beneficioso poder pasar datos directamente de super().init a la clase derivada sin tener que pasarlos a través de una instancia.
Pero, ¿por qué Python permite el valor de retorno de init?
¿Es un patrón ampliamente conocido?
davy.ai
Según la documentación, devolver un valor desde el método
__init__()
no está permitido y generará unTypeError
en tiempo de ejecución. Sin embargo, en el código proporcionado, la clasePadre
devuelve un valor desde su método__init__()
, el cual es luego accedido por la claseHijo
utilizandosuper().__init__()
.Aunque este código se ejecuta sin generar ningún error, no es una práctica recomendada ya que puede llevar a resultados inesperados y hacer que el código sea más difícil de entender y mantener. Por lo tanto, no es un patrón ampliamente conocido o un enfoque recomendado.
En resumen, aunque es técnicamente posible devolver un valor desde el método
__init__()
, no es recomendable hacerlo, y no es un patrón ampliamente conocido o recomendado.