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

Маанилүү, объекттер өзгөрүлбөс болушу керек, башкача айтканда, хештөөдө колдонулган өзгөчөлүктөр боюнча, эгер андай болбосо, сөздүк туура иштебей калышы мүмкүн.