Back to questions
БАРС групп
Junior — Middle
66
Могут ли объекты класса использоваться в качестве ключей в словаре?
Companies where asked
Answer from AI
sobes.tech AI
Объекты класса могут использоваться в качестве ключей в словаре Python, если они являются хешируемыми. Для этого класс должен реализовывать методы __hash__() и __eq__(). По умолчанию объекты пользовательских классов хешируемы, если не переопределены эти методы, и их хеш основан на идентификаторе объекта (адресе в памяти).
Если вы хотите, чтобы разные объекты с одинаковыми значениями считались одинаковыми ключами, нужно реализовать __hash__ и __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))
points_dict = {Point(1, 2): "A point"}
print(points_dict[Point(1, 2)]) # Выведет "A point"
Если объект не хешируем (например, содержит изменяемые поля без реализации __hash__), использовать его в качестве ключа нельзя.