diff options
author | Raymond Hettinger <python@rcn.com> | 2002-11-22 00:07:40 (GMT) |
---|---|---|
committer | Raymond Hettinger <python@rcn.com> | 2002-11-22 00:07:40 (GMT) |
commit | 54405456e5c2b76879472051c23e6c1c9f433beb (patch) | |
tree | ab0827e9b4532d0ad144d9e0033d451410eb41a3 /Lib/UserDict.py | |
parent | ba2cf078d2bd8705f61afda7081522981674882e (diff) | |
download | cpython-54405456e5c2b76879472051c23e6c1c9f433beb.zip cpython-54405456e5c2b76879472051c23e6c1c9f433beb.tar.gz cpython-54405456e5c2b76879472051c23e6c1c9f433beb.tar.bz2 |
Implement dict() style constructor.
Already supported dict() and dict(mapping).
Now supports dict(itemsequence) and
Just van Rossum's new syntax for dict(keywordargs).
Also, added related unittests.
The docs already promise dict-like behavior
so no update is needed there.
Diffstat (limited to 'Lib/UserDict.py')
-rw-r--r-- | Lib/UserDict.py | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/Lib/UserDict.py b/Lib/UserDict.py index 96f049d..02ddfc4 100644 --- a/Lib/UserDict.py +++ b/Lib/UserDict.py @@ -1,9 +1,14 @@ """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): |