[Python-3000] Total ordering and __cmp__

Collin Winter collinw at gmail.com
Wed Mar 21 02:10:14 CET 2007


Quoting from the commit message for r51533, which removed the default ordering:

"""
A general problem with getting lots of these tests to pass is
the reality that for object types that have a natural total ordering,
implementing __cmp__ is much more convenient than implementing
__eq__, __ne__, __lt__, and so on.  Should we go back to allowing
__cmp__ to provide a total ordering?  Should we provide some other
way to implement rich comparison with a single method override?
Alex proposed a __key__() method; I've considered a __richcmp__()
method.  Or perhaps __cmp__() just shouldn't be killed off...
"""

What's the status on this? FWIW, I would like to see __cmp__ stay as a
fallback measure if __eq__, __ne__, __lt__, etc aren't defined for
total ordering purposes. I've run across this while trying to get the
docs toolchain working, and I was initially shocked that __cmp__ was
no longer called.

Collin Winter


More information about the Python-3000 mailing list