]> granicus.if.org Git - python/commitdiff
Fix bug in copy() by using copy.copy() instead of making assumptions
authorGuido van Rossum <guido@python.org>
Tue, 3 Jun 1997 14:10:01 +0000 (14:10 +0000)
committerGuido van Rossum <guido@python.org>
Tue, 3 Jun 1997 14:10:01 +0000 (14:10 +0000)
(it so happens that copy.copy() works fine for the base UserDict
type).  Also reindented the entire module to have 4-space indents.

Lib/UserDict.py

index 3ee474381577287a6026fcc1e58ebf7499c7c03e..2f4f541942c158dd6e56ce03c1689c4a140af50e 100644 (file)
@@ -1,34 +1,28 @@
 # A more or less complete user-defined wrapper around dictionary objects
 
 class UserDict:
-       def __init__(self): self.data = {}
-       def __repr__(self): return repr(self.data)
-       def __cmp__(self, dict):
-               if type(dict) == type(self.data):
-                       return cmp(self.data, dict)
-               else:
-                       return cmp(self.data, dict.data)
-       def __len__(self): return len(self.data)
-       def __getitem__(self, key): return self.data[key]
-       def __setitem__(self, key, item): self.data[key] = item
-       def __delitem__(self, key): del self.data[key]
-       def clear(self): return self.data.clear()
-       def copy(self):
-           if self.__class__ is UserDict:
-               new = UserDict()
-               new.dict = self.data.copy()
-           else:
-               new = self.__class__()  # XXX assumption: constructor signature
-               for k, v in self.items():
-                   new[k] = v
-           return new
-       def keys(self): return self.data.keys()
-       def items(self): return self.data.items()
-       def values(self): return self.data.values()
-       def has_key(self, key): return self.data.has_key(key)
-       def update(self, other):
-           if type(other) is type(self.data):
-               self.data.update(other)
-           else:
-               for k, v in other.items():
-                   self.data[k] = v
+    def __init__(self): self.data = {}
+    def __repr__(self): return repr(self.data)
+    def __cmp__(self, dict):
+       if type(dict) == type(self.data):
+           return cmp(self.data, dict)
+       else:
+           return cmp(self.data, dict.data)
+    def __len__(self): return len(self.data)
+    def __getitem__(self, key): return self.data[key]
+    def __setitem__(self, key, item): self.data[key] = item
+    def __delitem__(self, key): del self.data[key]
+    def clear(self): return self.data.clear()
+    def copy(self):
+       import copy
+       return copy.copy(self)
+    def keys(self): return self.data.keys()
+    def items(self): return self.data.items()
+    def values(self): return self.data.values()
+    def has_key(self, key): return self.data.has_key(key)
+    def update(self, other):
+       if type(other) is type(self.data):
+           self.data.update(other)
+       else:
+           for k, v in other.items():
+               self.data[k] = v