Предположим, у меня есть класс с конструктором (или другой функцией), который принимает переменное количество аргументов и затем условно устанавливает их как атрибуты класса.
Я мог бы установить их вручную, но кажется, что параметры переменных достаточно распространены в python, и для этого должна быть общая идиома. Но я не уверен, как это сделать динамически.
У меня есть пример с использованием eval, но это вряд ли безопасно. Я хочу знать, как это сделать - может быть, с помощью лямбды?
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украсьте свой класс @attr.sи установите аргументы как a = attr.ib(); b = attr.ib()и т. д. Подробнее здесь .