[Python-3000] Change to class construction? (original) (raw)

Phillip J. Eby pje at telecommunity.com
Tue Jul 10 02:48:54 CEST 2007


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...


More information about the Python-3000 mailing list