Junior — Middle
98
Класта оның объектілері сөздікке кілт ретінде қолданылуы үшін қандай функциялар жүзеге асырылуы керек?
AI-дан жауап
sobes.tech AI
Python-дағы сөздікте кілт ретінде қолданылатын объектілер классында __hash__() және __eq__() әдістерін жүзеге асыруы керек.
__hash__()объектінің хеш мәнін қайтаруы керек, ол объектінің өмірі бойы өзгермейді.__eq__()объектілерді теңестіру логикасын анықтауы керек.
Маңыздысы, тең деп саналатын (__eq__ қайтарғаны True) объектілердің бірдей хеш мәні болуы керек.
Мысал:
class Point:
def __init__(self, x, y):
self.x = x
self.y = y
def __eq__(self, other):
if not isinstance(other, Point):
return False
return self.x == other.x and self.y == other.y
def __hash__(self):
return hash((self.x, self.y))
p1 = Point(1, 2)
p2 = Point(1, 2)
my_dict = {p1: "Нүкте"}
print(my_dict[p2]) # Нәтиже: Нүкте
Бұл әдістерсіз объектілер кілт ретінде қолданыла алмайды, себебі әдепкі бойынша олар хештелмейді немесе id бойынша салыстырылады.