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
Маанилүү, объекттер өзгөрүлбөс болушу керек, башкача айтканда, хештөөдө колдонулган өзгөчөлүктөр боюнча, эгер андай болбосо, сөздүк туура иштебей калышы мүмкүн.