From: "Raymond Hettinger"
How about adding some mixins to simplify the implementation of some of the fatter interfaces?
class CompareMixin: """ Given an __eq__ method in a subclass, adds a __ne__ method Given __eq__ and __lt__, adds !=, <=, >, >=. """
class MappingMixin: """ Given __setitem__, __getitem__, and keys, implements values, items, update, get, setdefault, len, iterkeys, iteritems, itervalues, has_key, and __contains__.
If __delitem__ is also supplied, implements clear, pop, and popitem.
Takes advantage of __iter__ if supplied (recommended).
Takes advantage of __contains__ or has_key if supplied (recommended). """
The idea is to make it easier to implement these interfaces. Also, if the interfaces get expanded, the clients automatically updated.
I think these are a great idea, *in the context of* an understanding of what we want interfaces to be, say, and do. Are we there yet? ----------------------------------------------------------- David Abrahams * Boost Consulting dave@boost-consulting.com * http://www.boost-consulting.com