[Python] Funzioni come moduli
Domenico Chierico
spaghetty a gmail.com
Dom 29 Giu 2008 19:12:04 CEST
On Sun, 2008-06-29 at 15:54 +0200, Leonardo wrote:
> Quindi mi sarebbe d'aiuto un buon metodo per importare moduli a seconda
> di una variabile, o altri modo per definire ed utilizzare funzioni in
> files esterni al "cuore" del programma.
> Grazie per le eventuali risposte :)
credo che quello che tu stai cercando e' proprio la funzione __import__
che ti permette di importare un modulo dal suo nome.
Io personalmente risolvo questo tipo di problema usando una directory
come modulo dei plugin, quindi all'avvio dell'applicazione cerco i file
all'interno di quella directory e da questi vi importo le classi (senza
istanziarle e creo un indice degli oggetti, per associare a questi delle
regole di attivazione (come nel tuo caso) uso un metodo di classe che mi
ritorna la chiave di selezione per quello specifico oggetto.
eccoti un breve esempio:
tmp = [ i for i in os.listdir("Actions") if i.endswith(".py")]
self.handlers = {}
for i in tmp:
cname = i[0:-3]
module = __import__("Actions."+cname, globals(),locals(),["*"])
mtclass = getattr(module,cname)
self.handlers[mtclass.getRule()]= mtclass
PS. il codice non e' testato prendilo giusto come esempio :)
getRule e' un metodo di classe che dovresti implementare in ogni oggetto
Maggiori informazioni sulla lista
Python