dynamisch Methoden erstellen mithilfe setattr
Verfasst: Mittwoch 25. Juni 2008, 02:45
Hallo,
zwar gabs hier schon mehrere Fragen zu setattr, aber folgendes Problem konnte ich hier noch nicht finden. Sorry falls es doch schon gelöst wurde.
Also, ich möchte einem Objekt dynamisch Methoden mitgeben, und zwar mithilfe eines Arrays in dem die Namen der Methoden stehen und mit einer Schleife.
Etwa so:
Leider funktioniert das nicht, die Ausgaben lauten:
Ich habs auch mit probiert eval() pobiert, aber das
geht leider auch nicht. Er scheint bei dem zweiten Ansatz zu denken, dass ich eval überschreiben will und sagt
Gibts irgendeine Möglichkeit Methoden mithilfe eines Arrays und einer Schleife zu erstellen?
Vielen Dank.
zwar gabs hier schon mehrere Fragen zu setattr, aber folgendes Problem konnte ich hier noch nicht finden. Sorry falls es doch schon gelöst wurde.
Also, ich möchte einem Objekt dynamisch Methoden mitgeben, und zwar mithilfe eines Arrays in dem die Namen der Methoden stehen und mit einer Schleife.
Etwa so:
Code: Alles auswählen
class Test:
def __init__(self):
for i in range(3):
def f():
print i
setattr(self, 'method'+str(i),f)
instance = Test()
instance.method0()
instance.method1()
instance.method2()
Was mache ich falsch? Irgendwie scheint er immer die letzte Definition von f() zu benutzen.2
2
2
Ich habs auch mit probiert eval() pobiert, aber das
Code: Alles auswählen
class Test:
def __init__(self):
names = ["a","b","c"]
for name in names:
def eval(name)():
print name
setattr(self, 'method'+name,eval(name))
instance = Test()
instance.methoda()
instance.methodb()
instance.methodc()
dabei markiert er die leere Klammer in Zeile 5.invalid Syntax
Gibts irgendeine Möglichkeit Methoden mithilfe eines Arrays und einer Schleife zu erstellen?
Vielen Dank.