Hi, in python 3.4.1, I get this surpising behaviour:

>>> l=Loc(0,0)
>>> l2=Loc(1,1)
>>> l>l2
False
>>> l<l2
True
>>> l<=l2
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unorderable types: Loc() <= Loc()
>>> l==l2
False
>>> l<l2 or l==l2
True

Loc implements both __lt__ and __eq__, which should be enough (?),
but even after I've added __lte__, I still have the error.

implementation:

class Loc:
    def __init__(self, x, y):
        self._loc = x, y
        self.x, self.y = x, y

    def __eq__(self, other):
        return self._loc == getattr(other, "_loc", None)

    def __lt__(self, other):
        return self._loc < other._loc

 - andrei
-- 
https://mail.python.org/mailman/listinfo/python-list

Reply via email to