Ciao,
Mr.SpOOn spiffera, lunedì 28 aprile 2008 circa:
Una soluzione penso possa essere un costrutto if-else, finché non
trovo la funzione desiderata.
Mi chiedevo però se ci fosse un metodo più elegante che mi permettesse
di leggere il nome della funzione direttamente dal menu a tendina, o
anche da un file yaml, ad esempio, e rendere così l'invocazione
dinamica.
Il modo piu' scemo che mi viene in mente, e' quello di creare un dict()
con
le tue funzioni.
funct_dict = {'pippo':a, 'ciccio':b, 'puzzetta':c }
e dopo le richiami normalmente, con
result = funct_dict['puzzetta']()
Questo e' sicuramente uno dei modi migliori, in quanto hai un certo grado
di controllo su quello che puo' essere chiamato. Piu' genericamente, per
accedere dinamicamente a un attributo di un oggetto:
getattr(oggetto, nome)
quindi:
getattr(oggetto, nome_metodo)(...parametri...)
Se si tratta di una funzione locale:
locals()[nome_funzione](...parametri...)
...e cosi' via (funzioni globali, builtin, ecc)
Con il dizionario hai in genere piu' controllo, ed e' preferibile.
--
Antonio Valente
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python