Как отмечено в комментариях, вам нужно явно указать __eq__
и __ne__
:
class Position:
def __init__(self, x, y):
self.x = int(x)
self.y = int(y)
def __eq__(self, other):
return self.x == other.x and self.y == other.y
def __ne__(self, other):
return not self == other
, что дает
>>> a = Position(1,2)
>>> b = Position(1,2)
>>> c = Position(2,3)
>>> a == b
True
>>> a == c
False
>>> b == c
False
>>> a != a
False
>>> a != b
False
>>> a != c
True
Обратите внимание, однако, что в Python 2 у вас будет:
>>> a > c
True
и другие, возможно, нежелательные поведения, тогда как в Python 3 (который вы используете) вы получите
TypeError: unorderable types: Position() > Position()