es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿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?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Según la documentación, devolver un valor desde el método __init__() no está permitido y generará un TypeError en tiempo de ejecución. Sin embargo, en el código proporcionado, la clase Padre devuelve un valor desde su método __init__(), el cual es luego accedido por la clase Hijo utilizando super().__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.

Comments are closed.