Guido van Rossum wrote:
On Wed, Oct 15, 2008 at 12:12 PM, Terry Reedy <tjreedy@udel.edu> wrote:
interpret the above as saying that we have already done as much as is
sensible (except for changing the docs).
I think we've done as much as I am comfortable with doing *by default*
(i.e. when inheriting from object). The rest should be provided via
mix-ins. But even those mix-ins should wait until 3.1.
After posting and then thinking some more, I came to the same conclusion, that anything more should be by explicit request.
Can you expand on how you reached this conclusion ? For one thing, total orderings are far more common, so that alone is a strong reason to have them by default, even if it made things harder for partial orderings. Even for those though, the current behavior is not necessarily better:
class SetlikeThingie(object):
def __init__(self, *items):
self.items = set(items)
def __eq__(self, other):
return self.items == other.items
def __ne__(self, other):
return self.items != other.items
def __lt__(self, other):
return self!=other and self.items.issubset(other.items)
>>> a = SetlikeThingie(1,2,3)
>>> b = SetlikeThingie(2,3,4)
>>> assert (a<b or a==b) == (a<=b)
AssertionError