Pregunta

Tengo innumerables clases de Python de varios proyectos de Sqlalchemy (y una pareja de Pygame también), y recientemente noté un patrón en muchos de ellos: sus constructores siempre fueron algo así:

class Foo(Base):
    def __init__(self, first, last, email, mi=""):
        self.first = first
        self.last = last
        self.email = email
        self.mi = mi

... por lo que lo único que hizo el constructor fue transferir un conjunto de argumentos posicionales a un conjunto de miembros de datos con nombre exactamente nombrado, realizando ningún cálculo u otras llamadas de función.

Me parece que esta repetición es innecesaria y propensa al error humano tras el cambio.

Esto me lleva a la pregunta aquí: ¿es posible generar automáticamente tal __init__(self, ...) función, preferiblemente sin mezclar con cpython bytecode o usando plantillas/macros para alterar el archivo fuente en sí?

No hay solución correcta

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top