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.