0
Wie kann ich Python-Funktionen mit dynamischen Variablennamen aufrufen? Dies ist ein Beispiel:Name der dynamischen Funktionsvariablen
class test(object):
def __init__(self):
self.a, self.b, self.c = 1, 2 ,3
def __str__(self):
return "a: " + str(self.a) + \
", b: " + str(self.b) + \
", c:" + str(self.c)
def inc_a(self):
self.a += 1
t1 = test()
print(t1)
t1.inc_a() # this is what I DON'T want, individual increment functions
print(t1)
# I would like a inc that works like this:
# t1.inc(a) --> increase a by 1
# t1.inc(b) --> increase b by 1
# t1.inc(c) --> increase c by 1
# print(t1)
Thx & Art
Bezug
eine Rückmeldung? hat es funktioniert? –
Ja, es funktioniert, vielen Dank (hat dir schon ein Like gegeben)! Ich werde es bald als Lösung akzeptieren. Ich hoffe jedoch, dass jemand im Funktionsaufruf eine Lösung ohne Anführungszeichen vorschlägt. Ich mag die setattr/getattr Lösung sehr, aber ich dachte, dass es eine Lösung geben könnte, die Rs eval (substitute()) ähnelt. (Die Exec-Lösung sieht wie ein Äquivalent für R's eval (parse (text =)) aus.) –
Ich fürchte, das wird in Python nicht möglich sein. Wenn du 't.inc (a)' nennst, muss 'a' ein bereits definiertes Objekt/eine Variable sein, ansonsten bekommst du 'NameError'. –