Sobes.tech
Junior — Middle
86

Kokias funkcijas reikia apibrėžti klasėje, kad jos egzempliorius būtų naudojamas kaip raktas Python žodyne?

Įmonės kur klausė
БилайнБилайн

Atsakymas iš AI

sobes.tech AI

Чтобы экземпляр класса можно было использовать в качестве ключа в словаре Python, необходимо, чтобы он был хешируемым. Для этого нужно определить в классе методы __hash__ и __eq__.

  • __hash__(self) должен возвращать целочисленное значение, которое будет использоваться для быстрого поиска ключа.
  • __eq__(self, other) должен определять логику сравнения объектов на равенство.

Важно, чтобы объекты, считающиеся равными (__eq__ возвращает True), имели одинаковый хеш (__hash__).

Пример:

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: "A point"}
print(my_dict[p2])  # Выведет: A point