Back to questions
Junior — Middle
76
Объясните, что такое объект, который можно хешировать, и какие особенности он должен иметь?
Companies where asked
Effective Mobile
Answer from AI
sobes.tech AI
Объект, который можно хешировать в Python, — это объект, для которого определён метод __hash__(), возвращающий целочисленное значение (хеш). Такой объект должен быть неизменяемым (immutable), чтобы его хеш оставался постоянным на протяжении жизни объекта.
Особенности хешируемого объекта:
- Неизменяемость: поля объекта не должны изменяться, иначе хеш станет некорректным.
- Реализация
__hash__: метод должен возвращать целочисленное значение. - Реализация
__eq__: объекты, равные по__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))
p = Point(1, 2)
print(hash(p))
Такой объект можно использовать в качестве ключа словаря или элемента множества.