2010-10-17 10 views
27

In python, supponiamo di avere una stringa che contiene il nome di una funzione di classe che so che un particolare oggetto avrà, come posso invocarlo?Python - Come richiamare dinamicamente una funzione su un oggetto per nome?

Cioè:

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

Sono curioso di sapere il motivo per cui si avrebbe bisogno di fare questo. Sembra che tu stia facendo qualcosa nel modo più duro. Potresti approfondire la tua situazione? – JoshD

+0

Ho un'app cli dove voglio accettare i comandi dalla riga di comando, ma non voglio fare qualcosa del tipo: "if command = 'doThing' then obj.doThing() elseif command = 'someOtherThing' ... e Voglio aggiungere metodi alla classe del gestore e quindi sarebbero automaticamente disponibili sul cli –

+0

è giusto così? In quali situazioni questo approccio non sarebbe una buona idea? Sono anche in una situazione simile, ma non sono sicuro che se andrò in questo modo, in qualche modo, sarebbe più chiaro se invece usassi esplicitamente la ramificazione, cosa ne pensi? Grazie! – ultrajohn

risposta

Problemi correlati