Back to questions
Junior — Middle
60
Для чего в Python реализуется метод __eq__, и какие задачи он решает?
Companies where asked
Атом Безопасность
Answer from AI
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, так как объекты разные по адресу.