Back to questions
Junior — Middle
70
Какие функции должны быть реализованы в классе для его объекты могли использоваться как ключи в словаре?
Answer from AI
sobes.tech AI
Чтобы объекты класса могли использоваться как ключи в словаре Python, класс должен реализовать методы __hash__() и __eq__().
__hash__()должен возвращать хеш-значение объекта, которое не меняется в течение жизни объекта.__eq__()должен определять логику сравнения объектов на равенство.
Важно, чтобы объекты, считающиеся равными (__eq__ возвращает True), имели одинаковый хеш.
Пример:
class Point:
def __init__(self, x, y):
self.x = x
self.y = y
def __eq__(self, other):
if not isinstance(other, Point):
return False
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)
my_dict = {p1: "A point"}
print(my_dict[p2]) # Выведет: A point
Без этих методов объекты не могут быть ключами, так как по умолчанию объекты не хешируемы или сравниваются по id.