[Python-ideas] Automatic total ordering

George Sakkis george.sakkis at gmail.com
Wed Oct 15 20:35:32 CEST 2008


On Wed, Oct 15, 2008 at 2:11 PM, Guido van Rossum <guido at python.org> wrote:

On Wed, Oct 15, 2008 at 11:03 AM, Terry Reedy <tjreedy at udel.edu> wrote:
> > George Sakkis wrote:
> >>
> >> Now that 3.x fixes the arbitrary object comparison wart and drops (?)
> >> __cmp__,
> >
> > An entry for __cmp__ was in the 3.0c1 doc, which confused me.
> > It is now gone in
> >
> http://docs.python.org/dev/3.0/reference/datamodel.html#special-method-names
> >
> > Since rich comparisons are defined on object and are inherited by all
> > classes, it would be difficult to make them not defined.
>
> I should also note that part of George's proposal has already been
> implemented: if you define __eq__, you get a complementary __ne__ for
> free. However it doesn't work the other way around (defining __ne__
> doesn't give you __eq__ for free), and there is no similar
> relationship for the ordering operators. The reason for the freebie is
> that it's *extremely* unlikely to want to define != as something other
> than the complement of == (the only use case is IEEE compliant NaNs);
> however it's pretty common to define non-total orderings (e.g. set
> inclusion).


Partial orderings are certainly used, but I believe they are far less common
than total ones. Regardless, a partially ordered class has to explicitly
define the supported methods with the desired semantics anyway; the proposed
change wouldn't make this any harder.

George
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-ideas/attachments/20081015/2c199cae/attachment.html>


More information about the Python-ideas mailing list