Angenommen, ich habe eine Klasse mit einem Konstruktor (oder einer anderen Funktion), die eine variable Anzahl von Argumenten verwendet und diese dann bedingt als Klassenattribute festlegt.
Ich könnte sie manuell einstellen, aber es scheint, dass variable Parameter in Python häufig genug sind, dass es dafür eine gemeinsame Sprache geben sollte. Aber ich bin mir nicht sicher, wie ich das dynamisch machen soll.
Ich habe ein Beispiel mit eval, aber das ist kaum sicher. Ich möchte wissen, wie ich das richtig machen kann - vielleicht mit 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 attrsDekorieren Sie einfach Ihre Klasse mit @attr.sund setzen Sie die Argumente wie a = attr.ib(); b = attr.ib()usw. Lesen Sie hier mehr .