Supposons que j'aie une classe avec un constructeur (ou une autre fonction) qui prend un nombre variable d'arguments et les définit comme attributs de la classe de manière conditionnelle.
Je pourrais les définir manuellement, mais il semble que les paramètres variables soient suffisamment courants en Python pour qu'il y ait un idiome commun pour faire cela. Mais je ne suis pas sûr de savoir comment le faire dynamiquement.
J'ai un exemple utilisant eval, mais c'est loin d'être sûr. Je voudrais savoir quelle est la bonne façon de faire -- 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])