<[EMAIL PROTECTED]> <[EMAIL PROTECTED]>
Message-ID: <[EMAIL PROTECTED]>
X-Sender: [EMAIL PROTECTED]
Received: from 82.111.147.97 [82.111.147.97] with HTTP/1.1 (POST); Mon, 30 Jun
2008 19:00:39 +0200
User-Agent: RoundCube Webmail/0.1
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
On Mon, 30 Jun 2008 18:26:21 +0200, Alessandro Dentella <[EMAIL PROTECTED]>
wrote:
>> > 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.
>>
>> Il problema e' che usi un dizionario per ambiente globale che pero' poi
>> butti via.
>>
>> Il codice seguente funziona come ci si aspetta:
>>
>> In [1]: ENV = {}
>> In [3]: execfile('plugin_A.py', ENV)
>> In [5]: a = ENV['A']()
>> In [6]: a.test()
>
>
> certo ma a quel punto ogni variabile viene importata nel namespace del
> chiamante e -proprio per dei plugin che possono essre fatti da terze
> parti-
> non so quanto sia opportuno. Chi mi assicura che non ridefinisca nomi di
> variabili che ho in uso?
A me non sembra che il global namespace del chiamante venga inquinato:
In [1]: ENV = {}
In [2]: execfile('plugin_A.py', ENV)
In [3]: a = ENV['A']()
In [4]: a.test()
[ ...roba... ]
In [5]: sys
---------------------------------------------------------------------------
<type 'exceptions.NameError'> Traceback (most recent call
last)
/home/piro/py/<ipython console> in <module>()
<type 'exceptions.NameError'>: name 'sys' is not defined
--
Daniele Varrazzo - Develer S.r.l.
http://www.develer.com
_______________________________________________
Python mailing list
[email protected]
http://lists.python.it/mailman/listinfo/python