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

Sonntag 28. Mai 2006, 14:29

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

Sonntag 28. Mai 2006, 15:36

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

Sonntag 28. Mai 2006, 15:58

wow, super danke :)
hat geklappt
Benutzeravatar
jens
Moderator
Beiträge: 8482
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Montag 29. Mai 2006, 06:52

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

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Montag 29. Mai 2006, 16:52

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 Modvoice
Antworten