Встречается на 2% собеседований по Python
Какие методы нужно реализовать, чтобы класс мог быть ключом словаря в Python
Для использования класса в качестве ключа словаря необходимо реализовать два специальных метода:
-
__hash__()- должен возвращать целочисленное значение, которое будет использоваться для хеширования объекта. Хеш должен оставаться постоянным на протяжении жизни объекта. -
__eq__()- метод сравнения на равенство с другим объектом. Должен возвращать True, если объекты считаются равными.
Пример:
python
class Point:
def __init__(self, x, y):
self.x = x
self.y = y
def __hash__(self):
return hash((self.x, self.y))
def __eq__(self, other):
if not isinstance(other, Point):
return False
return self.x == other.x and self.y == other.y
# Использование в качестве ключа
d = {}
p1 = Point(1, 2)
d[p1] = "value"Важно: если __eq__ изменяется, __hash__ должен быть согласованным (равные объекты должны иметь одинаковый хеш). Изменяемые объекты обычно не должны быть хешируемыми.

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