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

Каким образом можно сделать класс совместимым с механизмом хеширования и сравнения объектов?

Компании, где спрашивали
Баланс-ПлатформаБаланс-Платформа

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

sobes.tech AI

Чтобы класс был совместим с механизмом хеширования и сравнения объектов в Python, нужно переопределить методы __eq__ и __hash__.

  • __eq__(self, other) — определяет логику сравнения объектов на равенство.
  • __hash__(self) — возвращает хеш-значение объекта, которое используется в хеш-таблицах (например, в множествах и словарях).

Важно, что если объекты равны (__eq__ возвращает True), то их хеши должны совпадать.

Пример:

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

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

    def __hash__(self):
        return hash((self.x, self.y))

Теперь объекты Point можно использовать в множествах и как ключи словарей.