Можно ли написать свой класс и использовать объект этого класса как ключ словаря?

Да, если объект хешируемый и его равенство согласовано с хешем. У обычного класса это часто уже работает по идентичности; для сравнения по полям нужно правильно определить __eq__ и __hash__.

Короткий ответ

Что ответить на собеседовании

Да, если объект хешируемый и его равенство согласовано с хешем. У обычного класса это часто уже работает по идентичности; для сравнения по полям нужно правильно определить eq и hash.

Подробный разбор

Ответ с пояснениями

Да, если объект хешируемый и его равенство согласовано с хешем. У обычного класса это часто уже работает по идентичности; для сравнения по полям нужно правильно определить eq и hash.

Равные объекты должны давать одинаковый хеш, однако одинаковый хеш не делает объекты равными. Не меняйте поля, участвующие в хеше, после помещения ключа в словарь: поиск может перестать находить его ожидаемым образом. Для небольшого ключа по значению удобно использовать @dataclass(frozen=True) с хешируемыми полями. Возвращать случайный хеш или хешировать изменяемый список — неправильная реализация контракта.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее