Sobes.tech
Junior — Middle
92

Kuras funkcijas ir nepieciešams definēt klasē, lai tās instances varētu tikt izmantotas kā atslēga Python vārdnīcā?

Uzņēmumi, kur jautāja
БилайнБилайн

Atbilde no 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