[Python] I: Re: Richiamare funzione componendo il nome

tonino73 a libero.it tonino73 a libero.it
Lun 10 Set 2012 15:57:11 CEST





----Messaggio originale----
Da: tonino73 a libero.it
Data: 10/09/2012 15.14
A: <depaolim a gmail.com>
Ogg: R: Re: [Python] Richiamare funzione componendo il nome




----Messaggio originale----
Da: depaolim a gmail.com
Data: 10/09/2012 13.58
A: "tonino73 a libero.it"<tonino73 a libero.it>, "Discussioni generali sul linguaggio Python"<python a lists.python.it>
Ogg: Re: [Python] Richiamare funzione componendo il nome





Il giorno 10 settembre 2012 12:47, tonino73 a libero.it <tonino73 a libero.it> ha scritto:

Salve, non so se si è capito il mio problema dall' oggetto del messaggio. Cmq
quello che voglio fare è richiamare una funzione esistente componendo il suo
nome.
Posto il codice.

def sequenza_domande():
    for n in ncasuali[:]: #lista riempita precedentemente con dei numeri
casuali
        "domanda_"+str(n)+"()" # richiamo una funzione componendo il nome

il problema è che non considera la chiamata.
C'è qualcuno che può aiutarmi?

oltre a quello che ti è già stato suggerito, puoi considerare di usare anche getattr dopo aver importato il modulo in cui è definita la funzione (codice non testato!):

m = __import__(__name__)
f = getattr(m, "domanda_"+str(n))

e poi chiami la funzione con:

f()

ciao,
Marco



Grazie Marco
con questo metodo è andato tutto liscio come l'olio, effettivamente richiama l'attributo nome, ed è molto utile perchè nel mio caso evito di fare uno switch con if..elif..else per esempio per 100 domande.








-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.python.it/pipermail/python/attachments/20120910/2371588d/attachment.html>


Maggiori informazioni sulla lista Python