Back to questions
Okko
Junior — Middle
57
Объясните, каким образом реализуется хеширование при использовании собственного класса в качестве ключа в словаре или карте данных
Companies where asked
Answer from AI
sobes.tech AI
В 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__ — для проверки равенства ключей.