Suponha que eu tenha uma classe com um construtor (ou outra função) que recebe um número variável de argumentos e os define como atributos de classe condicionalmente.
Eu poderia defini-los manualmente, mas parece que os parâmetros variáveis são comuns o suficiente em python que deve haver um idioma comum para fazer isso. Mas não tenho certeza de como fazer isso dinamicamente.
Eu tenho um exemplo usando eval, mas dificilmente é seguro. Quero saber a maneira correta de fazer isso - talvez com 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
, decore sua classe com @attr.s
e defina os argumentos como a = attr.ib(); b = attr.ib()
etc. Leia mais aqui .