Python Glossary English

все Python 3ООПфункция

__eq__

магические методы

Метод оператора ==. Без него объекты равны, только если это один и тот же объект, как для is.

Синтаксис

def __eq__(self, other): ...

Определив __eq__, класс теряет __hash__: его экземпляры больше нельзя класть в set и делать ключами dict, пока не определён и __hash__ — согласованный с равенством. != Python 3 выводит сам, инвертируя __eq__. Для чужого типа возвращают NotImplemented, а не False: тогда Python спросит второй операнд.

Примеры

class Point:
    def __init__(self, x, y):
        self.x, self.y = x, y
    def __eq__(self, other):
        if not isinstance(other, Point):
            return NotImplemented
        return (self.x, self.y) == (other.x, other.y)
print(Point(1, 2) == Point(1, 2))  # → True
print(Point(1, 2) != Point(3, 4))  # → True — != выведен из __eq__
print(Point.__hash__)  # → None — без __hash__ в set не положить

См. также

Открыть в полном глоссарииdocs.python.orgСообщить о неточности