Вопрос проверяет понимание обобщённых типов, типизации и способности писать переиспользуемый и типобезопасный код.
Generic-типы позволяют описывать структуры и функции, которые работают с разными типами данных, сохраняя строгую типизацию. Они широко используются в аннотациях типов, коллекциях и API. В Python generics применяются вместе с typing. Это повышает качество статического анализа и снижает количество ошибок. Особенно полезны в больших кодовых базах.
Generic-типы решают задачу обобщения логики без потери информации о типах.
Generic-тип — это тип, параметризованный другим типом, который задаётся при использовании, а не при объявлении.
Использование generics позволяет:
писать универсальный код
сохранить информацию о типах
улучшить работу статических анализаторов
избежать приведения типов (cast)
from typing import TypeVar
T = TypeVar("T")
def first(items: list[T]) -> T:
return items[0]Здесь:
T — абстрактный тип
функция работает с list[int], list[str] и любыми другими типами
Коллекции
list[int]
dict[str, float]Контейнеры и обертки
class Box[T]:
def __init__(self, value: T):
self.value = valueAPI и библиотеки
репозитории
DTO
сервисные абстракции
Асинхронный и инфраструктурный код
очереди
результаты операций
кэши
Generic-типы:
не проверяются во время выполнения
работают только на уровне аннотаций
требуют дисциплины в использовании
Generic-типы — ключевой инструмент для масштабируемого и типобезопасного Python-кода, особенно в проектах с активным использованием статического анализа.