Sobes.tech
Junior — Middle

Какви стъпки трябва да се предприемат, за да може екземпляр от собствен клас да се използва като ключ в речник на Python?

sobes.tech AI

Отговор от 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] = 'стойност'
print(my_dict[key2])  # Ще изведе 'стойност', тъй като key1 == key2

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