Evan Simpson <[EMAIL PROTECTED]> writes:

> In Python 2.4 the following works:
>
>  >>> class G(dict):
> ...   def __getitem__(self, k):
> ...     return 'K' + k
> ...
>  >>> g = G()
>  >>> exec 'print x, y, z' in g
> Kx Ky Kz
>  >>>
>
[snip]
> [Is] there a way to do this (intercept global variable accesses)
> in Python 2.3?
>

One can emulate it in a rather limited way in pre 2.4 releases:

>>> cd = compile("print x, y, z", '<string>', 'exec')
>>> glbs = dict(globals())
>>> for id in cd.co_names:
        glbs[id] = 'K' + id

        
>>> exec cd in glbs
Kx Ky Kz

Special names can be used only as constants. It is better suited
for eval() than exec.

Lenard Lindstrom
<[EMAIL PROTECTED]>
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to