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