Вопрос проверяет знание контракта __hash__/__eq__ и понимание, почему “плохой хеш” ломает корректность и производительность словарей/множеств.
Короткий ответ
Хеш-функция должна быть детерминированной: для одного и того же объекта (в одном состоянии) она должна возвращать одно и то же число. Главное правило: если a == b, то hash(a) == hash(b) обязательно. Также хеш должен зависеть только от неизменяемых данных объекта, иначе ключ “потеряется” в dict/set. Для скорости важно, чтобы вычисление хеша было быстрым и давало хорошее распределение, чтобы было меньше коллизий.
Длинный ответ
Зарегистрироваться
Развернутый ответ доступен только зарегистрированным пользователям.