Sobes.tech
Junior — Middle
80

Erklären Sie, wie das Hashing bei der Verwendung einer eigenen Klasse als Schlüssel in einem Wörterbuch oder einer Datenkarte implementiert wird

Unternehmen wurden gefragt
OkkoOkko

Antwort von AI

sobes.tech KI

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

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

Пример:

class Point:
    def __init__(self, x, y):
        self.x = x
        self.y = y

    def __eq__(self, other):
        return isinstance(other, Point) and self.x == other.x and self.y == other.y

    def __hash__(self):
        return hash((self.x, self.y))

# Использование
points_dict = {}
pt1 = Point(1, 2)
pt2 = Point(1, 2)

points_dict[pt1] = "Точка A"
print(points_dict[pt2])  # Выведет "Точка A", так как pt1 == pt2 и хеш совпадает

Таким образом, словарь использует хеш объекта для быстрого доступа, а метод __eq__ — для проверки равенства ключей.