Курс 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"
- Генерация чисел с range()
- Сравнение объектов в Python
- Lambda-функция в Python: использование с map() и sum()
- Установка пакетов с помощью pip
- Замена символов в строке
- Фильтрация данных в Python.
- Преобразование типов данных в set comprehension
- Автоматизация с Python
- Функции min(), max(), sum()
- split() без разделителя
- Применение функций в Python
- Разработка Telegram-ботов
- JSON-esque в Python
- Передача неизвестных аргументов в Python.
- Функция map() и ленивая оценка
- Принцип одной функции
- Генераторы в Python
- Работа с библиотекой xkcd
- Декораторы в Python
- Распаковка значений в Python
- Работа с файлами в Python
- Проверка подстроки в строке
- Красивый вывод списка
- Сериализация и десериализация объектов
- Перемешивание списка с shuffle()
- Группировка элементов в словарь
- Создание циклической ссылки
- Проверка однородности элементов списка
- Установка и использование TensorFlow
- Печать списка с помощью метода join
- Сортировка в Python
- Python Enum Weekday Usage
- Утечки переменных цикла в Python 3.x
- Работа с файлами и директориями в Python.
- Управление контекстом выполнения
- Подсчет частоты элементов с Counter
- Обработка исключений в Python
- Комментарии в Python.
- Декораторы в Python
- Подсчет элементов в Python
- Функция enumerate() в Python
- Progress с библиотекой tqdm
- Метод __iand__ для пользовательских классов
- %pinfo: получение информации об объекте
- Быстрый поиск кода
- Форматирование вывода списков
- Форматирование строк с % в Python
- Определение имен функций















