Supongamos que tengo una clase con un constructor (u otra función) que toma un número variable de argumentos y luego los establece como atributos de clase condicionalmente.
Podría configurarlos manualmente, pero parece que los parámetros variables son lo suficientemente comunes en Python que debería haber un lenguaje común para hacer esto. Pero no estoy seguro de cómo hacer esto de forma dinámica.
Tengo un ejemplo usando eval, pero eso no es seguro. Quiero saber la forma correcta de hacer esto, ¿tal vez 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 tu clase con @attr.s, y establece los argumentos como a = attr.ib(); b = attr.ib()etc. Lee más aquí .