Для чего в Python реализуется метод __eq__, и какие задачи он решает?

Метод eq в Python используется для определения поведения оператора равенства == между объектами класса.

Короткий ответ

Что ответить на собеседовании

Метод eq в Python используется для определения поведения оператора равенства == между объектами класса. По умолчанию сравнение объектов происходит по их идентичности (адресу в памяти), но часто нужно сравнивать объекты по значению их атрибутов.

Подробный разбор

Ответ с пояснениями

Метод __eq__ в Python используется для определения поведения оператора равенства == между объектами класса. По умолчанию сравнение объектов происходит по их идентичности (адресу в памяти), но часто нужно сравнивать объекты по значению их атрибутов.

Реализуя __eq__, вы задаёте логику, по которой два объекта считаются равными. Это важно для корректной работы таких структур данных, как множества (set) и словари (dict), где проверяется равенство ключей.

Пример:

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

    def __eq__(self, other):
        if not isinstance(other, Point):
            return NotImplemented
        return self.x == other.x and self.y == other.y

p1 = Point(1, 2)
p2 = Point(1, 2)
print(p1 == p2)  # True

Без __eq__ этот код вернёт False, так как объекты разные по адресу.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее