Встречается на 1% собеседований по Python
Как сделать чтобы экземпляр класса был задействован как ключ в словаре
Чтобы использовать экземпляр класса как ключ в словаре, класс должен реализовывать методы __hash__ и __eq__. Хэш должен быть неизменяемым на протяжении жизни объекта, и объекты должны корректно сравниваться.
python
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def __hash__(self):
return hash((self.name, self.age))
def __eq__(self, other):
if not isinstance(other, Person):
return False
return self.name == other.name and self.age == other.age
person1 = Person("Alice", 30)
person2 = Person("Bob", 25)
d = {person1: "Alice's data", person2: "Bob's data"}
print(d[person1]) # Alice's data
text
Важно: если изменяемые атрибуты участвуют в хэше, это может привести к проблемам при изменении объекта после добавления в словарь.
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
Похожие вопросы
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы