Встречается на 1% собеседований по Python
Как сделать класс хешируемым
Чтобы сделать класс хешируемым в Python, нужно:
- Определить метод
__hash__() - Сделать класс неизменяемым (или гарантировать, что хеш не изменится)
- Обычно переопределяют
__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

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
Похожие вопросы
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы