Sobes.tech
Назад к вопросам
Junior — Middle
61

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

Компании, где спрашивали
Атом Безопасность

Ответ от нейросети

sobes.tech AI

Метод __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, так как объекты разные по адресу.