Зачем нужен метод __hash__
Python
Middle
Т-Банк
Зачем нужен метод __hash__
Ответы
Метод `__hash__` определяет хеш-значение объекта, которое используется при работе с хеш-таблицами (например, словарями и множествами). Он должен возвращать целое число, которое остаётся неизменным на протяжении всего времени жизни объекта.
Основные правила:
- Если объекты равны (`a == b`), их хеши должны быть одинаковыми (`hash(a) == hash(b)`).
- Объекты с разными хешами гарантированно считаются неравными.
- Хеш должен быть "стабильным" — не меняться, если не меняется состояние объекта.
Пример:
```
class Point:
def __init__(self, x, y):
self.x = x
self.y = y
def __eq__(self, other):
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)
print(hash(p1) == hash(p2)) # True
```
Если `__hash__` не определён, объект нельзя использовать как ключ словаря или элемент множества.