Junior — Middle
100
Como é que se pode usar uma instância da sua própria classe como chave num dicionário Python?
Resposta da IA
sobes.tech IA
Чтобы использовать экземпляр собственного класса в качестве ключа в словаре Python, нужно обеспечить, чтобы этот объект был хешируемым. Для этого в классе нужно определить методы __hash__ и __eq__.
Пример:
class MyKey:
def __init__(self, id):
self.id = id
def __hash__(self):
return hash(self.id)
def __eq__(self, other):
return isinstance(other, MyKey) and self.id == other.id
# Использование
key1 = MyKey(1)
key2 = MyKey(2)
my_dict = {key1: 'value1', key2: 'value2'}
print(my_dict[key1]) # вывод: value1
Без этих методов объекты по умолчанию не будут корректно работать как ключи, так как их хеш и сравнение по умолчанию основаны на идентичности объекта.