SF patch #667730: More DictMixin

Sebastien Keim pointed out that iterkeys and __contains__ require
their own definitions so their behavior will update when the
underlying method is subclassed.
This commit is contained in:
Raymond Hettinger 2003-01-22 01:39:06 +00:00
parent 981344567f
commit 51f3f1b7dc

View file

@ -90,13 +90,15 @@ class DictMixin:
except KeyError: except KeyError:
return False return False
return True return True
__contains__ = has_key def __contains__(self, key):
return self.has_key(key)
# third level takes advantage of second level definitions # third level takes advantage of second level definitions
def iteritems(self): def iteritems(self):
for k in self: for k in self:
yield (k, self[k]) yield (k, self[k])
iterkeys = __iter__ def iterkeys(self):
return self.__iter__()
# fourth level uses definitions from lower levels # fourth level uses definitions from lower levels
def itervalues(self): def itervalues(self):