Sobes.tech
Junior — Middle

Кадом функсияҳо бояд дар синф муайян карда шаванд, то ки намунаи он ҳамчун калид дар луғат Python истифода шавад?

sobes.tech AI

Ҷавоб аз 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