Объект может быть ключом словаря, если он хешируемый: хеш стабилен на время использования, а равные объекты имеют одинаковый хеш. Для пользовательского равенства согласуйте eq и hash.
Как сделать пользовательский объект ключом словаря?
Объект может быть ключом словаря, если он хешируемый: хеш стабилен на время использования, а равные объекты имеют одинаковый хеш. Для пользовательского равенства согласуйте __eq__ и __hash__.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Объект может быть ключом словаря, если он хешируемый: хеш стабилен на время использования, а равные объекты имеют одинаковый хеш. Для пользовательского равенства согласуйте eq и hash.
Обычные экземпляры без переопределения равенства используют идентичность. При определении eq Python обычно делает hash недоступным, пока его явно не задать. Удобный вариант для значений — frozen dataclass с хешируемыми полями. Нельзя менять поля, участвующие в хеше, пока объект служит ключом.