"""A more or less complete user-defined wrapper around dictionary objects."""
class UserDict:
- def __init__(self, dict=None):
- self.data = {}
- if dict is not None: self.update(dict)
+ def __init__(self, dict=None, **kwargs):
+ self.data = kwargs # defaults to {}
+ if dict is not None:
+ if hasattr(dict,'keys'): # handle mapping (possibly a UserDict)
+ self.update(dict)
+ else: # handle sequence
+ DICT = type({}) # because builtin dict is locally overridden
+ self.data.update(DICT(dict))
def __repr__(self): return repr(self.data)
def __cmp__(self, dict):
if isinstance(dict, UserDict):
uu1 = UserDict(u1)
uu2 = UserDict(u2)
+verify(UserDict(one=1, two=2) == d2) # keyword arg constructor
+verify(UserDict([('one',1), ('two',2)]) == d2) # item sequence constructor
+
# Test __repr__
verify(str(u0) == str(d0))