Get rid of dict.has_key(). Boy this has a lot of repercussions!
Not all code has been fixed yet; this is just a checkpoint...
The C API still has PyDict_HasKey() and _HasKeyString(); not sure
if I want to change those just yet.
diff --git a/Lib/UserDict.py b/Lib/UserDict.py
index 5e97817..b560a11 100644
--- a/Lib/UserDict.py
+++ b/Lib/UserDict.py
@@ -41,7 +41,6 @@
def iterkeys(self): return self.data.iterkeys()
def itervalues(self): return self.data.itervalues()
def values(self): return self.data.values()
- def has_key(self, key): return self.data.has_key(key)
def update(self, dict=None, **kwargs):
if dict is None:
pass
@@ -55,11 +54,11 @@
if len(kwargs):
self.data.update(kwargs)
def get(self, key, failobj=None):
- if not self.has_key(key):
+ if key not in self:
return failobj
return self[key]
def setdefault(self, key, failobj=None):
- if not self.has_key(key):
+ if key not in self:
self[key] = failobj
return self[key]
def pop(self, key, *args):
@@ -91,14 +90,12 @@
def __iter__(self):
for k in self.keys():
yield k
- def has_key(self, key):
+ def __contains__(self, key):
try:
value = self[key]
except KeyError:
return False
return True
- def __contains__(self, key):
- return self.has_key(key)
# third level takes advantage of second level definitions
def iteritems(self):