2010-10-17 5 views
27

En python, disons que j'ai une chaîne qui contient le nom d'une fonction de classe que je connais un objet particulier, comment puis-je l'invoquer?Python - Comment appeler dynamiquement une fonction sur un objet par son nom?

C'est:

obj = MyClass() # this class has a method doStuff() 
func = "doStuff" 
# how to call obj.doStuff() using the func variable? 
+1

Je suis curieux de savoir pourquoi vous devez le faire. Cela semble que vous faites peut-être quelque chose à la dure. Pourriez-vous élaborer sur votre situation? – JoshD

+0

J'ai une application cli où je veux accepter les commandes de la ligne de commande, mais je ne veux pas faire quelque chose comme: "si commande = 'doThing' puis obj.doThing() elseif commande = 'someOtherThing' ... et Je veux ajouter des méthodes à la classe de gestionnaire, puis ils seraient automatiquement disponibles sur le cli –

+0

est-ce bien pour le faire? Quelles situations cette approche ne serait pas une bonne idée? Je suis dans une situation similaire aussi, mais je ne suis pas sûr si je vais aller de cette façon.en quelque sorte, je pense que ce serait plus clair si j'utilise explicitement branchement à la place.Que pensez-vous? merci! – ultrajohn

Répondre

Questions connexes