Sto utilizzando SQLAlchemy e molte classi nel mio modello a oggetti hanno gli stessi due attributi: id e (numero intero & chiave primaria) e nome (una stringa). Sto cercando di evitare dichiarandoli in ogni classe in questo modo:SQLAlchemy: evitare la ripetizione nella definizione della classe di stile dichiarativa
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)
#...
Che cosa è un buon modo per farlo? Ho provato ad usare le metaclassi ma non ha funzionato ancora.
Purtroppo, questo non è andare a lavorare perché l'attributo id sarebbe poi essere condiviso tra tutti i sottoclassi di IdNameMixin. In SQLAlchemy, ogni classe deve avere il proprio id (un oggetto appena creato della colonna della classe). – max
Normalmente si sarebbe corretto, ma vedere la mia risposta aggiornata. – dhaffey
Ah molto bello !! Grazie. Ora, se solo potessi fare qualcosa per il '__tablename__', che sicuramente deve essere unico :) Ma mi piace il tuo approccio con la classe di mixin migliore della mia modifica al metaclass. – max