Nick Coghlan wrote:
Steven Bethard wrote:

Sorry if this is a repost -- it didn't appear for me the first time.


So I was looking at the Language Reference's discussion about emulating container types[1], and nowhere in it does it mention that .keys() is part of the container protocol. Because of this, I would assume that to use UserDict.DictMixin correctly, a class would only need to define __getitem__, __setitem__, __delitem__ and __iter__. So why does UserDict.DictMixin require keys() to be defined?


Because it's a DictMixin, not a ContainerMixin?

"Containers usually are sequences (such as lists or tuples) or mappings (like dictionaries)".


.keys() is definitely part of the standard dictionary interface, and not something the mixin can derive from the generic container methods.

Why is that? Isn't keys derivable as:

def keys(self):
    return list(self)

if __iter__ is defined?

Steve
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to