Wenn ich die folgende Python-Klasse:Dynamisch verschachtelte Funktionen auf Argumente basieren Aufruf
class Test(object):
funcs = {
"me" : "action",
"action": "action",
"say" : "say",
"shout" : "say"
}
def dispatch(self, cmd):
def say:
print "Nested Say"
def action:
print "Nested Action"
# The line below gets the function name as a string,
# How can I call the nested function based on the string?
Test.funcs.get(cmd, "say")
Ich möchte in der Lage sein, Folgendes zu tun:
>>> Test().dispatch("me")
Nested Action
>>> Test().dispatch("say")
Nested Say
Irgendwelche Vorschläge, wie kann ich gehst du darüber?
+1. Sieht so aus als würdest du mich damit schlagen :). Ich wollte etwas Ähnliches vorschlagen. Ich würde ein kleines Ding hinzufügen, das ein zweiter Parameter für "register" ist, der eine Liste von Namen sein wird, die die Funktion aufgerufen werden kann, indem sie "dispatch" verwendet. Dies würde die harte 'handle_ *' - Benennungsanforderung entfernen und mehrere Namen für dieselbe Methode erlauben, wie sie vom ursprünglichen Fragesteller benötigt wird. –
'dict' sollte 'dict_' in der ersten Zeile der 'dec' Methode sein, richtig? – mshsayem
@ Noufal Ibrahim. Ausgezeichnete Ideen. Implementiert. @mshsayem. Danke für das Zeigen. – aaronasterling