Sobes.tech
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 бойынша салыстырылады.