summaryrefslogtreecommitdiffstats
path: root/Lib/UserDict.py
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/UserDict.py')
-rw-r--r--Lib/UserDict.py18
1 files changed, 12 insertions, 6 deletions
diff --git a/Lib/UserDict.py b/Lib/UserDict.py
index 02ddfc4..34ceb3a 100644
--- a/Lib/UserDict.py
+++ b/Lib/UserDict.py
@@ -2,13 +2,13 @@
class UserDict:
def __init__(self, dict=None, **kwargs):
- self.data = kwargs # defaults to {}
+ self.data = {}
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))
+ if not hasattr(dict,'keys'):
+ dict = type({})(dict) # make mapping from a sequence
+ self.update(dict)
+ if len(kwargs):
+ self.update(kwargs)
def __repr__(self): return repr(self.data)
def __cmp__(self, dict):
if isinstance(dict, UserDict):
@@ -61,6 +61,12 @@ class UserDict:
return self.data.popitem()
def __contains__(self, key):
return key in self.data
+ def fromkeys(cls, iterable, value=None):
+ d = cls()
+ for key in iterable:
+ d[key] = value
+ return d
+ fromkeys = classmethod(fromkeys)
class IterableUserDict(UserDict):
def __iter__(self):