Встречается на собеседованиях • сегодня

Как сделать класс хешируемым

Чтобы сделать класс хешируемым в Python, нужно:

  1. Определить метод __hash__()
  2. Сделать класс неизменяемым (или гарантировать, что хеш не изменится)
  3. Обычно переопределяют __eq__() для сравнения объектов

Пример:

python
class Point:
    def __init__(self, x, y):
        self._x = x
        self._y = y
    
    @property
    def x(self):
        return self._x
    
    @property
    def y(self):
        return self._y
    
    def __eq__(self, other):
        return isinstance(other, Point) and self.x == other.x and self.y == other.y
    
    def __hash__(self):
        return hash((self.x, self.y))

Ключевые моменты:

  • Хеш должен быть одинаковым для равных объектов (__eq__ и __hash__ согласованы)
  • Лучше использовать кортеж из неизменяемых атрибутов для хеширования
  • Если класс изменяемый, __hash__ должен возвращать None
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы