Załóżmy, że mam klasę z konstruktorem (lub inną funkcją), która przyjmuje zmienną liczbę argumentów, a następnie warunkowo ustawia je jako atrybuty klasy.
Mógłbym ustawić je ręcznie, ale wydaje się, że parametry zmiennych są na tyle powszechne w Pythonie, że powinien istnieć wspólny idiom do tego. Ale nie jestem pewien, jak to zrobić dynamicznie.
Mam przykład używający eval, ale to raczej nie jest bezpieczne. Chcę wiedzieć, jak to zrobić - może z lambdą?
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 attrsudekoruj swoją klasę @attr.si ustaw argumenty na a = attr.ib(); b = attr.ib()itp. Przeczytaj więcej tutaj .