Je suis en train de se débarrasser de exec
dans un code similaire à ceci:Création dynamique de terrain de classe avant les machines metaclass
class A(object):
for field in ['one', 'two', 'three']:
exec '%s = "%s value"' % (field, field)
... de telle sorte que:
>>> A.one
'one value'
>>> A.two
'two value'
>>> A.three
'three value'
EDIT: et aussi l'exigence mentionnée dans le sujet est remplie, c.-à-d. A.one
est 'one value'
, avant que A
soit instancié (à ne pas confondre avec A()
instancié).
Y a-t-il un moyen?
Pouvez-vous expliquer ce que le titre a à voir avec la question? –
Ceci est icky. Pourquoi voulez-vous le faire? – katrielalex
@gnibbler Oui. J'essaye de faire cela avant que la classe soit instanciée. Ainsi, la métaclasse appelée à se référer à A fonctionne déjà sur ces champs créés dynamiquement. – dhill