Levi wrote:
> Now, I understand that set doesn't return NotImplemented to avoid having
> it's __cmp__ method called, but what I don't get is why it has a __cmp__
> method at all. I thought the entire point of set and co. using the rich
> comparison operators is that Sets only define a partial ordering and so
> shouldn't define __cmp__, which implies a total ordering. So why define
> a __cmp__ method that only raises an error at the expense of breaking
> the rich comparison operators?

set() and frozenset() do this to prevent falling back to the default
ordering employed in Python 2.x:

>>> obj1 = type('T1', (), {})
>>> obj2 = type('T2', (), {})
>>> obj1 < obj2
True
>>> obj1 > obj2
False

It should be possible to make them play more nicely with others in 3.x
where that undesirable fallback behaviour is gone though.

Cheers,
Nick.

-- 
Nick Coghlan   |   [EMAIL PROTECTED]   |   Brisbane, Australia
---------------------------------------------------------------
            http://www.boredomandlaziness.org
_______________________________________________
Python-3000 mailing list
Python-3000@python.org
http://mail.python.org/mailman/listinfo/python-3000
Unsubscribe: 
http://mail.python.org/mailman/options/python-3000/archive%40mail-archive.com

Reply via email to