Какие знаешь магические (dunder) методы для работы с хэшируемыми объектами в Python
Python
Middle
Баланс-Платформа
Какие знаешь магические (dunder) методы для работы с хэшируемыми объектами в Python
Ответы
Основные магические методы для хэшируемых объектов:
- `__hash__` - возвращает целочисленный хэш объекта. Должен возвращать одинаковое значение для равных объектов. Если `__eq__` определен, `__hash__` должен быть тоже определен.
- `__eq__` - определяет поведение оператора `==`.
Пример:
```
class Point:
def __init__(self, x, y):
self.x = x
self.y = y
def __hash__(self):
return hash((self.x, self.y))
def __eq__(self, other):
if not isinstance(other, Point):
return False
return self.x == other.x and self.y == other.y
```
Важно:
- Если `__eq__` не определен, Python использует сравнение по id
- Изменяемые объекты не должны быть хэшируемыми (лучше определить `__hash__ = None`)
- Хэш должен оставаться постоянным на протяжении жизни объекта