[Python] Funzioni come moduli
Alessandro Dentella
sandro a e-den.it
Lun 30 Giu 2008 17:14:45 CEST
On Mon, Jun 30, 2008 at 03:41:39PM +0200, Leonardo wrote:
> Alla fine ho risolto con execfile, č incredibile: esegue un file come se
> fosse all'interno del file chiamante, passandogli tutte le variabile, le
> funzioni, e le classi esistenti.
> L'unica cosa č che adesso un modulo č cosė ad esempio:
>
> file rejoin.py:
>
> #! /usr/bin/python
> # -*- coding: UTF-8 -*-
> user, mode, chan, request = self.get_params(server_response)
> if self.Bot.nick in server_response:
> print "Sono stato kikkato!"
> self.Bot.join(chan)
> self.send(self.response, chan)
>
> E fa un po' senso vederlo cosė, con praticamente tutte le variabili e
> funzioni non dichiarate nč passate come argomento eppure funzionanti.
> Ovvio che se lo lancio direttamente solleva decine di errori x
c'č un altro aspetto che non mi piace di execfile. Proprio il mese scorso
sono passato da execfile a __import__ in un set di test il cui principio č
uguale a quello dei plugin.
il "problema" č negli import. Supponi di avere un plugin cosė::
import sys
class A(object):
def test(self):
print sys.path
e di volerlo usare cosė
LOCS = {}
execfile('plugin_A.py', {}, LOCS)
a = LOCS['A']()
a.test()
ti verrā sollevato l'errore che perchč 'a' non vede __pių__ il modulo sys.
E non mi pare una soluzione dire che assieme ad A importo tutto nel mio
programma principale.
Ovviamente funzionerebbe se facessi l'import direttamente nel metodo, ma io
lo consideravo troppo particolare e esposto ad errori.
sandro
*:-)
Maggiori informazioni sulla lista
Python