J
Jeremy Sanders
Hi -
I'm trying to subclass a dict which is used as the globals environment of
an eval expression. For instance:
class Foo(dict):
def __init__(self):
self.update(globals())
self['val'] = 42
def __getitem__(self, item):
# this doesn't get called from the eval statement
print "*", item
return dict.__getitem__(self, item)
a = Foo()
print a['val']
print eval('val*2+6', a)
The first print statements also prints "* val", but __getitem__ is never
called by the evaluation in the eval statement.
Is this a bug? Does anyone have an idea for a workaround? I'm using
Python 2.3.3.
Thanks
Jeremy
I'm trying to subclass a dict which is used as the globals environment of
an eval expression. For instance:
class Foo(dict):
def __init__(self):
self.update(globals())
self['val'] = 42
def __getitem__(self, item):
# this doesn't get called from the eval statement
print "*", item
return dict.__getitem__(self, item)
a = Foo()
print a['val']
print eval('val*2+6', a)
The first print statements also prints "* val", but __getitem__ is never
called by the evaluation in the eval statement.
Is this a bug? Does anyone have an idea for a workaround? I'm using
Python 2.3.3.
Thanks
Jeremy