Funktionen dynamisch aufrufen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
bot
User
Beiträge: 20
Registriert: Montag 22. Mai 2006, 19:47

Hi

Ich möchte eine Funktion anhand eines dict aufrufen. Leider geht die letzte Zeile nicht :( wie sag ich ihm, das es sich um eine funktion handelt und nicht um einen string?

Code: Alles auswählen

functionsDict = {
                'a'     : 'myA',
                'b'     : 'myB',
                'c'     : 'myC'
            }
          
def myA():
  print "a"
  
def myB():
  print "b"

def myC():
  print "c"
                
wert = "b"

func = functionsDict[wert]

print "Funktionsname: " + func

func()
helmut
User
Beiträge: 57
Registriert: Mittwoch 2. November 2005, 07:45
Wohnort: Dormagen

Zum Beispiel so:

Code: Alles auswählen

def myFuncA():
    print 'hier ist myFuncA()'

fdict = {'f1':myFuncA}
fdict['f1']()
#Ausgabe: hier ist myFuncA()
Gruss, Helmut
bot
User
Beiträge: 20
Registriert: Montag 22. Mai 2006, 19:47

wow, super danke :)
hat geklappt
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Nur der vollständigkeitshalber... Wenn man den Funktionsnahmen als String vorliegen hat, kann man mit getattr() an die Funktion kommen...

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

jens hat geschrieben:Wenn man den Funktionsnahmen als String vorliegen hat, kann man mit getattr() an die Funktion kommen...
Ist aber eher unschön, wenn man die Callables direkt im Dict angeben kann.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Antworten