Sobes.tech
Назад к вопросам
Junior — Middle
68

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

Ответ от нейросети

sobes.tech AI

Чтобы экземпляр собственного класса мог использоваться в качестве ключа в словаре Python, необходимо, чтобы он был хешируемым и сравнимым. Для этого нужно реализовать методы __hash__() и __eq__() в классе. Метод __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

# Использование
my_dict = {}
key1 = MyKey(1)
key2 = MyKey(1)
my_dict[key1] = 'value'
print(my_dict[key2])  # Выведет 'value', так как key1 == key2

Важно, чтобы объекты были неизменяемыми по атрибутам, участвующим в хешировании, иначе словарь может работать некорректно.