Встречается на собеседованиях • сегодня
Могут ли быть объекты класса ключом словаля
В Python объекты класса могут быть ключами словаря, если они хешируемы. Для этого класс должен реализовывать методы __hash__ и __eq__. По умолчанию пользовательские классы наследуют __hash__ от object, который использует id() объекта, а __eq__ сравнивает по id.
Пример:
python
class Person:
def __init__(self, name):
self.name = name
p1 = Person('Alice')
p2 = Person('Bob')
d = {p1: 1, p2: 2} # Работает, так как объекты хешируемыЕсли класс изменяемый (например, содержит изменяемые атрибуты), лучше явно запретить хеширование:
python
class MutablePerson:
def __init__(self, name):
self.name = name
__hash__ = None # Запрет хешированияВажно: если переопределить __eq__, __hash__ автоматически становится None, если не переопределить его явно.

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