Sobes.tech
Back to questions
Junior — Middle
77

Какое наследуемое методологическое действие необходимо выполнить, чтобы экземпляр класса стал допустимым ключом в структуре данных типа словарь?

Answer from AI

sobes.tech AI

Чтобы экземпляр класса стал допустимым ключом в словаре Python, он должен быть хешируемым. Для этого необходимо реализовать методы __hash__() и __eq__().

  • Метод __hash__() должен возвращать целочисленное значение, которое будет использоваться для быстрого поиска ключа.
  • Метод __eq__() должен определять логику сравнения объектов на равенство.

Важно, чтобы объекты, считающиеся равными (__eq__ возвращает True), имели одинаковый хеш (__hash__).

Пример:

class MyKey:
    def __init__(self, id):
        self.id = id

    def __eq__(self, other):
        if isinstance(other, MyKey):
            return self.id == other.id
        return False

    def __hash__(self):
        return hash(self.id)

# Использование
my_dict = {}
key = MyKey(10)
my_dict[key] = "value"
print(my_dict[MyKey(10)])  # Выведет "value"