Supposons que j'ai une classe avec un constructeur (ou une autre fonction) qui prend un nombre variable d'arguments, puis les définit comme attributs de classe de manière conditionnelle.
Je pourrais les définir manuellement, mais il semble que les paramètres variables sont suffisamment courants en python pour qu'il devrait y avoir un idiome commun pour le faire. Mais je ne sais pas comment procéder de manière dynamique.
J'ai un exemple utilisant eval, mais ce n'est guère sûr. Je veux savoir la bonne façon de faire cela - peut-être avec lambda?
class Foo:
def setAllManually(self, a=None, b=None, c=None):
if a!=None:
self.a = a
if b!=None:
self.b = b
if c!=None:
self.c = c
def setAllWithEval(self, **kwargs):
for key in **kwargs:
if kwargs[param] != None
eval("self." + key + "=" + kwargs[param])
pip install attrs, décorez votre classe avec @attr.s, et définissez les arguments comme a = attr.ib(); b = attr.ib()etc. Pour en savoir plus, cliquez ici .