> 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