Estoy usando SQLAlchemy, y muchas clases en mi modelo de objetos tienen los mismos dos atributos: id y (número entero & clave principal) y nombre (una cadena). Estoy tratando de evitar declararlos en todas las clases de la siguiente manera:SQLAlchemy: evitando la repetición en la definición de clase de estilo declarativo
class C1(declarative_base()):
id = Column(Integer, primary_key = True)
name = Column(String)
#...
class C2(declarative_base()):
id = Column(Integer, primary_key = True)
name = Column(String)
#...
¿Qué es una buena manera de hacerlo? Intenté usar metaclases pero aún no funcionaba.
Desafortunadamente, esto no va a funcionar porque el atributo id se compartiría entonces entre todas las subclases de IdNameMixin. En SQLAlchemy, cada clase debe tener su propia identificación (un objeto recién creado de Columna de clase). – max
Normalmente estarías en lo cierto, pero mira mi respuesta actualizada. – dhaffey
¡Ah, genial! Gracias. Ahora si solo pudiera hacer algo con '' __tablename__', que definitivamente tiene que ser único :) Pero me gusta su enfoque con la clase mixin mejor que la modificación de mi metaclase. – max