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
Важно е обектите да са неизменяеми по отношение на атрибутите, участващи в хеширането, иначе речникът може да работи неправилно.