Sobes.tech
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.