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()
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4