Курс 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"
- Команда %dhist — список посещенных каталогов
- ChainMap.new_child() — добавление нового словаря
- Очистка данных с помощью pandas
- Обработка исключений в Python
- Измерение времени выполнения
- Регистрация на TenChat
- Логирование с Logzero
- Установка Git и AWS CLI
- Функция enumerate в Python
- Enum в Python: создание и использование перечислений
- Генераторы словарей и множеств
- Структура строк в Python
- Проверка на истинность объектов в Python
- Pillow: работа с изображениями
- Проверка типа объекта в Python
- Модуль Operator в Python
- Работа с библиотекой requests
- Лямбда-функции в Python
- Лямбда-функции для min/max
- Замена текста с re.sub()
- Замеры производительности в Python
- Форматирование строк в Python
- Оператор in и not in в Python
- JMESPath в Python
- Перемешивание списка с shuffle()
- Бинарный поиск
- Оператор is в Python
- Работа с байтовыми строками в Python
- Операторы сравнения в Python
- Метод join() для объединения элементов
- Генераторы в Python
- Комментарии в Python.
- Обновление ключей в Python
- Удаление ключей из словаря
- Конвертация коллекций в Python
- Печать в одной строке
- Список переменных с %who
- Разделение строки с помощью re.split()
- Асинхронный код в Python
- ROT13 Шифр Цезаря в Python
- Отношения подклассов в Python
- Руководство по использованию Colorama
- Распаковка аргументов в Python
- Подсчет частоты элементов с Counter
- Вывод переменной и строки в Python
- Пропуск строк в файле с itertools















