Python à l'aide de getattr à l'appel de la fonction avec des paramètres variables
Je suis en utilisant getattr pour appeler des fonctions différentes en fonction d'une variable.
Im faire quelque chose comme ça:
getattr(foo, bar) ()
Qui fonctionne, appelant les fonctions comme foo.bar()
Mon problème est que j'ai une barre de fonctions de et je veux l'appeler avec des paramètres différents. Par exemple:
def f1() :
pass
def f2(param1) :
pass
def f3(param1,param2) :
pass
donc 'bar' pourrait être la f1, f2, ou f3
J'ai essayé ceci:
assumming que params est une liste qui contient tous les paramètres nécessaires pour le " bar " de la fonction
getattr(foo, bar) (for p in params :)
Je en train de regarder pour un "nettoyage" de la solution, pas besoin de regarder sur la longueur de la variable params
OriginalL'auteur lcorral | 2012-08-02
Vous devez vous connecter pour publier un commentaire.
Vous pouvez essayer quelque chose comme:
Cela fonctionne si
params
est une liste ou un tuple. Les éléments deparams
seront décompressés dans l'ordre:est équivalent à:
Si il y a des arguments mot-clé, vous pouvez le faire aussi.
où
keyword_params
est un dictionnaire.Aussi, Cette réponse est vraiment indépendant de
getattr
. Il va travailler pour toute fonction/méthode.**kwargs
trop, juste pour qu'il ne se termine pas avec dur pour traquer les bugs plus tard, devait-il tenter d'utiliser le mot clé arguments.Ajouté.
OriginalL'auteur