Junior — Middle
Python lug'atida kalit sifatida foydalanish uchun o'z sinfingizning nusxasini qanday qadamlar bilan amalga oshirish kerak?
sobes.tech AI
AIdan javob
Python lug‘atida o‘z sinfingizning nusxasi kalit sifatida ishlatilishi uchun, u hashga mos va taqqoslanadigan bo‘lishi kerak. Buning uchun, sinfda __hash__() va __eq__() metodlarini amalga oshirish zarur. __hash__ metodi ob'ekt uchun uning muhim atributlarini hisobga olgan holda yagona butun son qiymatini qaytarishi kerak, va __eq__ ob'ektlarning tengligini aniqlash uchun ishlatiladi.
Misol:
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
# Foydalanish
my_dict = {}
key1 = MyKey(1)
key2 = MyKey(1)
my_dict[key1] = 'qiymat'
print(my_dict[key2]) # 'qiymat' chiqaradi, chunki key1 == key2
Muhim shuki, ob'ektlar hash qilishda ishlatiladigan atributlar bo‘yicha o‘zgarmas bo‘lishi kerak, aks holda lug‘at noto‘g‘ri ishlashi mumkin.