On Wednesday 15 October 2008, Terry Reedy wrote:
Since rich comparisons are defined on object and are inherited by all classes, it would be difficult to make them not defined.
Well, I believe that the suggestion comes down to having object's rich comparison operators try to use those of it's subclass rather than just throwing an error. Something like: class object(): def __lt__(self, o): raise Error def __eq__(self, o): raise Error def __ne__(self, o): return not self.__eq__(self, o) def __le__(self, o): return self.__lt__(self, o) or self.__eq__(self, o) def __gt__(self, o): return not (self.__lt__(self, o) or self.__eq__(self, o)) def __ge__(self, o): return not self.__lt__(self, o) and self.__eq__(self, o) Of course, if it were to actually be implemented, it would make more sense if it could use any two non complement ops (rather than lt and eq), but that would also make some trouble, I think. BTW, rather than the class decorator, you could just inherit (multiply?) the above class for total ordering as well.