At 07:40 PM 7/9/2007 -0500, Ron Adam wrote:
>Guido van Rossum wrote:
>
>>We could easily change this to return a
>>writable mapping that's not a dict at all but a "view" on the locals
>>just as dict.keys() returns a view on a dict. I don't see why locals()
>>couldn't return the object used to represent the namespace, but I
>>don't see that it couldn't be some view on that object either,
>>depending on the details of the implementation.
>
>This sounds great! I just recently wanted to pass a namespace to
>exec, but it refuses to accept anything but a dictionary for a local
>name space.
You can already do that in Python 2.4.
>What I really want to do is pass an object as the local
>namespace. And have the exec() use it complete with it's properties
>intact. Passing obj.__dict__ doesn't work in this case.
You need a wrapper, e.g.:
class AttrMap(object):
def __init__(self, ob):
self.ob = ob
def __getitem__(self, key):
try: return getattr(self.ob, key)
except AttributeError: raise KeyError, key
# setitem, delitem, etc...
_______________________________________________
Python-3000 mailing list
[email protected]
http://mail.python.org/mailman/listinfo/python-3000
Unsubscribe:
http://mail.python.org/mailman/options/python-3000/archive%40mail-archive.com