josh logan wrote:

Here is a minimal example showing the problematic behavior.

class Int():
    def __init__(self, i):
        self.i = i
    def __cmp__(self, other):
        return cmp(self.i, other.i)

Is = [Int(i) for i in range(8)]
Is.sort()  # throws TypeError: unorderable types Int() < Int()
sorted(Is) # ditto, if above not present

The 3.0b2 version of LibRef/ Built-in Types/ Comparisions says
"Instances of a class cannot be ordered with respect to other instances of the same class, or other types of object, unless the class defines enough of the methods __cmp__(), __lt__(), __le__(), __gt__(), and __ge__() (in general, either __cmp__() or both __lt__() and __eq__() are sufficient, if you want the conventional meanings of the comparison operators).

The notes for Mutable Sequence .sort() say nothing more. So the exception appears to be a bug, perhaps left over from when there was a plan (since aborted) to delete cmp and __cmp__. If the 3.0c1 version of the docs say the same, and no one says otherwise, I would file a report on the tracker at bugs.python.org, using the minimal example above.

Terry Jan Reedy

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to