Junior — Middle
92
Kuras funkcijas ir nepieciešams definēt klasē, lai tās instances varētu tikt izmantotas kā atslēga Python vārdnīcā?
Uzņēmumi, kur jautāja
Atbilde no AI
sobes.tech AI
Чтобы экземпляр класса можно было использовать в качестве ключа в словаре Python, необходимо, чтобы он был хешируемым. Для этого нужно определить в классе методы __hash__ и __eq__.
__hash__(self)должен возвращать целочисленное значение, которое будет использоваться для быстрого поиска ключа.__eq__(self, other)должен определять логику сравнения объектов на равенство.
Важно, чтобы объекты, считающиеся равными (__eq__ возвращает True), имели одинаковый хеш (__hash__).
Пример:
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