Sobes.tech
Back to questions
Junior — Middle
56

Каким образом можно использовать экземпляр собственного класса в качестве ключа в словаре Python?

Answer from AI

sobes.tech AI

Чтобы использовать экземпляр собственного класса в качестве ключа в словаре 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

Без этих методов объекты по умолчанию не будут корректно работать как ключи, так как их хеш и сравнение по умолчанию основаны на идентичности объекта.