Back to questions
Т-Банк
Junior — Middle
57
Какова основная задача метода __hash__ в Python и зачем он необходим в рамках работы с объектами?
Companies where asked
Атом Безопасность
Answer from AI
sobes.tech AI
Метод __hash__ в Python возвращает целочисленное значение (хэш) объекта, которое используется для быстрого сравнения и поиска объектов в хэш-таблицах, например, в множествах (set) и словарях (dict).
Основная задача __hash__ — обеспечить уникальный и неизменный идентификатор объекта во время его жизни, чтобы объекты можно было эффективно использовать как ключи в словарях или элементы множества.
Важно, что если объект переопределяет метод __eq__, то для корректной работы хэширования нужно также переопределить __hash__, чтобы объекты, считающиеся равными, имели одинаковый хэш.
Пример:
class Point:
def __init__(self, x, y):
self.x = x
self.y = y
def __eq__(self, other):
return (self.x, self.y) == (other.x, other.y)
def __hash__(self):
return hash((self.x, self.y))
p1 = Point(1, 2)
p2 = Point(1, 2)
print(p1 == p2) # True
print(hash(p1) == hash(p2)) # True
s = {p1}
print(p2 in s) # True
Без корректного __hash__ объекты не смогут использоваться в множествах и словарях как ключи.