Курс Python → Тайное преобразование типа ключа

В Python существует механизм, который называется «таинственное преобразование типа ключа». Это означает, что если вы создаете объект SomeClass с аргументом «s» и используете его как ключ в словаре, то это будет эквивалентно использованию строки «s» в качестве ключа. Это происходит потому, что класс SomeClass унаследовал метод hash от класса str, что позволяет использовать объект SomeClass в качестве ключа в словаре.

Кроме того, когда вы сравниваете объект SomeClass(«s») с строкой «s», результат будет True. Это происходит потому, что класс SomeClass также унаследовал метод eq от класса str, что позволяет сравнивать объекты SomeClass с строками. Таким образом, выражение SomeClass(«s») == «s» будет оценено как True.

Пример кода:


class SomeClass:
    def __init__(self, value):
        self.value = value

    def __eq__(self, other):
        return self.value == other

    def __hash__(self):
        return hash(str(self.value))

# Создание объекта SomeClass с аргументом "s"
obj = SomeClass("s")

# Использование объекта SomeClass в качестве ключа в словаре
d = {obj: "value"}

# Проверка эквивалентности объекта SomeClass и строки "s"
print(obj == "s")  # True

В данном примере мы создаем класс SomeClass с методами eq и hash, которые позволяют использовать объекты этого класса в качестве ключей в словаре и сравнивать их с обычными строками. Это демонстрирует «таинственное преобразование типа ключа» в Python и показывает, как можно использовать объекты пользовательского класса в различных контекстах.

Твои коллеги будут рады, поделись в

Автор урока

Дмитрий Комаровский
Дмитрий Комаровский

Автоматизация процессов
в КраснодарБанки.ру

Другие уроки курса "Python"

  1. Структуры данных в Python
  2. Lambda Functions in Python
  3. Структурирование именованных констант
  4. Переопределение метода sub
  5. Проверка версии Python
  6. Распаковка значений в Python
  7. Утечки переменных цикла в Python 3.x
  8. Разделение строки в Python
  9. Объединение Python и Shell
  10. Функция zip() для объединения списков
  11. Структурирование данных с Pydantic
  12. Курс Data Scientist в медицине
  13. Создание списков в Python
  14. Импорт и использование модулей в Python
  15. Установка и использование Telegram API в Python
  16. Кортежи в Python: особенности и преимущества
  17. Основы работы со списками
  18. Оператор * в Python
  19. Использование функции product
  20. Оператор «моржа» (Walrus Operator)
  21. Поиск подстроки в строке
  22. Хранение переменных в Python.
  23. Работа с getopt
  24. Поиск индекса элемента в списке
  25. Переопределение метода len
  26. Присоединение элементов коллекции
  27. Потоковый ввод в Python
  28. Списковый компрехеншен.
  29. Функция findall() для поиска вхождений строки
  30. Удаление элементов из списка
  31. Принципы программирования
  32. Логирование в Python
  33. Синтаксис переменных цикла в Python
  34. Установка и использование pyshorteners
  35. Python UserString — создание подклассов строк
  36. Значения по умолчанию в Python
  37. Функция rsplit() в Python
  38. Python defaultdict добавление ключа
  39. Преобразование символов в нижний регистр
  40. Метод lt для сортировки объектов
  41. Декоратор защиты анонимных пользователей
  42. Роль запятой в Python
  43. Оператор «or» в Python
  44. Перевод текста с Python Translator
  45. Удаление ссылок в Python
  46. Сортировка HTML-элементов
  47. Подсказки типов в Python

Marketello читают маркетологи из крутых компаний