Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit b94cd96

Browse files
committed
Fix bug in copy() by using copy.copy() instead of making assumptions
(it so happens that copy.copy() works fine for the base UserDict type). Also reindented the entire module to have 4-space indents.
1 parent bd40d7e commit b94cd96

1 file changed

Lines changed: 25 additions & 31 deletions

File tree

Lib/UserDict.py

Lines changed: 25 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,28 @@
11
# A more or less complete user-defined wrapper around dictionary objects
22

33
class UserDict:
4-
def __init__(self): self.data = {}
5-
def __repr__(self): return repr(self.data)
6-
def __cmp__(self, dict):
7-
if type(dict) == type(self.data):
8-
return cmp(self.data, dict)
9-
else:
10-
return cmp(self.data, dict.data)
11-
def __len__(self): return len(self.data)
12-
def __getitem__(self, key): return self.data[key]
13-
def __setitem__(self, key, item): self.data[key] = item
14-
def __delitem__(self, key): del self.data[key]
15-
def clear(self): return self.data.clear()
16-
def copy(self):
17-
if self.__class__ is UserDict:
18-
new = UserDict()
19-
new.dict = self.data.copy()
20-
else:
21-
new = self.__class__() # XXX assumption: constructor signature
22-
for k, v in self.items():
23-
new[k] = v
24-
return new
25-
def keys(self): return self.data.keys()
26-
def items(self): return self.data.items()
27-
def values(self): return self.data.values()
28-
def has_key(self, key): return self.data.has_key(key)
29-
def update(self, other):
30-
if type(other) is type(self.data):
31-
self.data.update(other)
32-
else:
33-
for k, v in other.items():
34-
self.data[k] = v
4+
def __init__(self): self.data = {}
5+
def __repr__(self): return repr(self.data)
6+
def __cmp__(self, dict):
7+
if type(dict) == type(self.data):
8+
return cmp(self.data, dict)
9+
else:
10+
return cmp(self.data, dict.data)
11+
def __len__(self): return len(self.data)
12+
def __getitem__(self, key): return self.data[key]
13+
def __setitem__(self, key, item): self.data[key] = item
14+
def __delitem__(self, key): del self.data[key]
15+
def clear(self): return self.data.clear()
16+
def copy(self):
17+
import copy
18+
return copy.copy(self)
19+
def keys(self): return self.data.keys()
20+
def items(self): return self.data.items()
21+
def values(self): return self.data.values()
22+
def has_key(self, key): return self.data.has_key(key)
23+
def update(self, other):
24+
if type(other) is type(self.data):
25+
self.data.update(other)
26+
else:
27+
for k, v in other.items():
28+
self.data[k] = v

0 commit comments

Comments
 (0)