Припустимо, у мене є клас із конструктором (або іншою функцією), який приймає змінну кількість аргументів і потім умовно встановлює їх як атрибути класу.
Я міг би їх встановити вручну, але, схоже, що змінні параметри досить поширені в 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()тощо. Детальніше тут .