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
Муҳим аст, ки объектҳо дар бораи атрибутҳое, ки дар хешшавӣ истифода мешаванд, тағйирнопазир бошанд, вагарна луғат метавонад нодуруст кор кунад.