[Python-Dev] Dictionary subclasses and exec
Andrew Kuchling
akuchlin@mems-exchange.org
23 Oct 2001 20:13:29 -0000
The following bit of code defines a dictionary that folds all its keys
to lowercase before inserting them, but 'exec "Name = 1" in
LowerCaseDict()' doesn't seem to call my __getitem__(), as the listed
keys include 'Name'. Should this be expected to work?
--amk
class LowerCaseDict(dictionary):
def _fold_key (self, key):
if not isinstance(key, str):
raise TypeError, "All keys must be strings"
return key.lower()
def __getitem__ (self, key):
key = self._fold_key(key)
return dictionary.__getitem__(self, key)
def __setitem__ (self, key, value):
key = self._fold_key(key)
dictionary.__setitem__(self, key, value)
def __delitem__ (self, key):
key = self._fold_key(key)
dictionary.__delitem__(self, key, value)
d = LowerCaseDict()
exec 'Name = 1' in d
print d.keys()