Supponiamo di avere una classe con un costruttore (o un'altra funzione) che accetta un numero variabile di argomenti e quindi li imposta come attributi di classe in modo condizionale.
Potrei impostarli manualmente, ma sembra che i parametri variabili siano abbastanza comuni in Python che dovrebbe esserci un idioma comune per farlo. Ma non sono sicuro di come farlo dinamicamente.
Ho un esempio che usa eval, ma non è sicuro. Voglio sapere il modo corretto per farlo, forse con 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, decora la tua classe @attr.se imposta gli argomenti come a = attr.ib(); b = attr.ib()ecc. Leggi di più qui .