Si j'ai la classe Python suivante:Dynamiquement appelant les fonctions imbriquées basées sur des arguments
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")
Je voudrais être en mesure de faire ce qui suit:
>>> Test().dispatch("me")
Nested Action
>>> Test().dispatch("say")
Nested Say
Des suggestions quant à la façon dont je peux vas-y?
+1. On dirait que tu m'as battu :). J'allais proposer quelque chose de similaire. J'ajouterais une petite chose qui est un deuxième paramètre à 'register' qui sera une liste de noms que la fonction peut être appelée en utilisant" dispatch ". Cela supprimerait l'exigence de nommage hard "handle_ *" et autoriserait plusieurs noms pour la même méthode que celle requise par l'interrogateur d'origine. –
'dict' devrait être 'dict_' dans la première ligne de la méthode 'dec', non? – mshsayem
@Noufal Ibrahim. Excellentes idées. Mis en œuvre. @mshsayem. Merci de m'avoir pointé. – aaronasterling