Рассмотренные здесь типы аннотаций абстрактных базовых классов соответствуют встроенным коллекциям, представленным в модуле collections.abc.
С версии Python 3.9 для всех рассмотренных типов аннотаций не рекомендован импорт из модуля typing, так как теперь collections.abc. поддерживает синтаксис аннотации []. Смотрите GenericAlias.
typing.AbstractSet() устарело с версии Python 3.9,typing.ByteString() устарело с версии Python 3.9,typing.Collection() устарело с версии Python 3.9,typing.Container() устарело с версии Python 3.9,typing.ItemsView() устарело с версии Python 3.9,typing.KeysView() устарело с версии Python 3.9,typing.Mapping() устарело с версии Python 3.9,typing.MappingView() устарело с версии Python 3.9,typing.MutableMapping() устарело с версии Python 3.9,typing.MutableSequence() устарело с версии Python 3.9,typing.MutableSet() устарело с версии Python 3.9,typing.Sequence() устарело с версии Python 3.9,typing.ValuesView() устарело с версии Python 3.9,typing.Iterable() устарело с версии Python 3.9,typing.Iterator() устарело с версии Python 3.9,typing.Generator() устарело с версии Python 3.9,typing.Hashable устарело с версии Python 3.12,typing.Reversible() устарело с версии Python 3.9,typing.Sized устарело с версии Python 3.12,typing.Coroutine() устарело с версии Python 3.9,typing.AsyncGenerator() устарело с версии Python 3.9,typing.AsyncIterable() устарело с версии Python 3.9,typing.AsyncIterator() устарело с версии Python 3.9,typing.Awaitable() устарело с версии Python 3.9,typing.ContextManager() устарело с версии Python 3.9,typing.AsyncContextManager() устарело с версии Python 3.9.typing.AbstractSet(Sized, Collection[T_co]):Класс typing.AbstractSet() общая версия абстрактного базового класса collections.abc.Set.
Устарело с Python 3.9: теперь
collections.abc.Setподдерживает синтаксис аннотации[]. СмотритеGenericAlias.
typing.ByteString(Sequence[int]):Класс typing.ByteString() общая версия абстрактного базового класса collections.abc.ByteString.
Этот тип представляет типы bytes, bytearray, и memoryview.
В качестве сокращения для этого типа, bytes могут использоваться для аннотирования аргументов любого из упомянутых выше типов.
Устарело с Python 3.9: теперь
collections.abc.ByteStringподдерживает синтаксис аннотации[]. СмотритеGenericAlias.
typing.Collection(Sized, Iterable[T_co], Container[T_co]):Класс typing.Collection() общая версия абстрактного базового класса collections.abc.Collection.
Новое в Python 3.6.0.
Устарело с Python 3.9: теперь
collections.abc.Collectionподдерживает синтаксис аннотации[]. СмотритеGenericAlias.
typing.Container(Generic[T_co]):Класс typing.Container() общая версия абстрактного базового класса collections.abc.Container.
Устарело с Python 3.9: теперь
collections.abc.Containerподдерживает синтаксис аннотации[]. СмотритеGenericAlias.
typing.ItemsView(MappingView, Generic[KT_co, VT_co]):Класс typing.ItemsView() общая версия абстрактного базового класса collections.abc.ItemsView.
Устарело с Python 3.9: теперь
collections.abc.ItemsViewподдерживает синтаксис аннотации[]. СмотритеGenericAlias.
typing.KeysView(MappingView[KT_co], AbstractSet[KT_co]):Класс typing.KeysView() общая версия абстрактного базового класса collections.abc.KeysView.
Устарело с Python 3.9: теперь
collections.abc.KeysViewподдерживает синтаксис аннотации[]. СмотритеGenericAlias.
typing.Mapping(Sized, Collection[KT], Generic[VT_co]):Класс typing.Mapping() общая версия абстрактного базового класса collections.abc.Mapping.
Этот тип можно использовать следующим образом:
def get_position_in_index(word_list: Mapping[str, int], word: str) -> int: return word_list[word]
Устарело с Python 3.9: теперь
collections.abc.Mappingподдерживает синтаксис аннотации[]. СмотритеGenericAlias.
typing.MappingView(Sized, Iterable[T_co]):Класс typing.MappingView() общая версия абстрактного базового класса collections.abc.MappingView.
Устарело с Python 3.9: теперь
collections.abc.MappingViewподдерживает синтаксис аннотации[]. СмотритеGenericAlias.
typing.MutableMapping(Mapping[KT, VT]):Класс typing.MutableMapping() общая версия абстрактного базового класса collections.abc.MutableMapping.
Устарело с Python 3.9: теперь
collections.abc.MutableMappingподдерживает синтаксис аннотации[]. СмотритеGenericAlias.
typing.MutableSequence(Sequence[T]):Класс typing.MutableSequence() общая версия абстрактного базового класса collections.abc.MutableSequence.
Устарело с Python 3.9: теперь
collections.abc.MutableSequenceподдерживает синтаксис аннотации[]. СмотритеGenericAlias.
typing.MutableSet(AbstractSet[T]):Класс typing.MutableSet() общая версия абстрактного базового класса collections.abc.MutableSet.
Устарело с Python 3.9: теперь
collections.abc.MutableSetподдерживает синтаксис аннотации[]. СмотритеGenericAlias.
typing.Sequence(Reversible[T_co], Collection[T_co]):Класс typing.Sequence() общая версия абстрактного базового класса collections.abc.Sequence.
Устарело с Python 3.9: теперь
collections.abc.Sequenceподдерживает синтаксис аннотации[]. СмотритеGenericAlias.
typing.ValuesView(MappingView[VT_co]):Класс typing.ValuesView() общая версия абстрактного базового класса collections.abc.ValuesView.
Устарело с Python 3.9: теперь
collections.abc.ValuesViewподдерживает синтаксис аннотации[]. СмотритеGenericAlias.
Corresponding to other types in collections.abc
typing.Iterable(Generic[T_co]):Класс typing.Iterable() общая версия абстрактного базового класса collections.abc.Iterable.
Устарело с Python 3.9: теперь
collections.abc.Iterableподдерживает синтаксис аннотации[]. СмотритеGenericAlias.
typing.Iterator(Iterable[T_co]):Класс typing.Iterator() общая версия абстрактного базового класса collections.abc.Iterator.
Устарело с Python 3.9: теперь
collections.abc.Iteratorподдерживает синтаксис аннотации[]. СмотритеGenericAlias.
typing.Generator(Iterator[YieldType], Generic[YieldType, SendType, ReturnType]):Генератор может быть аннотирован общим типом Generator[YieldType, SendType, ReturnType].
Примеры:
def echo_round() -> Generator[int, float, str]: sent = yield 0 while sent >= 0: sent = yield round(sent) return 'Done'
Обратите внимание, что в отличие от многих других универсальных шаблонов в модуле typing, SendType генератора ведет себя контравариантно, а не ковариантно или инвариантно.
Если генератор будет выдавать только значения, установите для SendType и ReturnType значение None:
def infinite_stream(start: int) -> Generator[int, None, None]: while True: yield start start += 1
Также возможно явно указать эти типы:
def infinite_stream(start: int) -> Generator[int, None, None]: while True: yield start start += 1
В качестве альтернативы, отметьте генератор как имеющий тип возвращаемого значения Iterable[YieldType] или Iterator[YieldType]:
def infinite_stream(start: int) -> Iterator[int]: while True: yield start start += 1
Устарело с Python 3.9: теперь
collections.abc.Generatorподдерживает синтаксис аннотации[]. СмотритеGenericAlias.
Изменено в Python 3.13: добавлены значения по умолчанию для типов отправки и возврата.
typing.Hashable:Атрибут typing.Hashable псевдоним для абстрактного базового класса collections.abc.Hashable.
Устарело с Python 3.12: вместо этого необходимо использовать напрямую
Collections.abc.Hashable.
typing.Reversible(Iterable[T_co]):Класс typing.Reversible() общая версия абстрактного базового класса collections.abc.Reversible.
Устарело с Python 3.9: теперь
collections.abc.Reversibleподдерживает синтаксис аннотации[]. СмотритеGenericAlias.
typing.Sized:Атрибут typing.Sized псевдоним для абстрактного базового класса collections.abc.Sized.
Устарело с Python 3.12: вместо этого необходимо использовать напрямую
Collections.abc.Sized.
typing.Coroutine(Awaitable[V_co], Generic[T_co, T_contra, V_co]):Класс typing.Coroutine() общая версия абстрактного базового класса collections.abc.Coroutine.
Варианты и порядок типов переменных соответствуют переменным генератора, например:
from collections.abc import Coroutine c = None # type: Coroutine[list[str], str, int] ... x = c.send('hi') # type: list[str] async def bar() -> None: x = await c # type: int
Устарело с Python 3.9: теперь
collections.abc.Reversibleподдерживает синтаксис аннотации[]. СмотритеGenericAlias.
typing.AsyncGenerator(AsyncIterator[YieldType], Generic[YieldType, SendType]):Асинхронный генератор может быть аннотирован общим типом AsyncGenerator[YieldType, SendType].
Пример:
async def echo_round() -> AsyncGenerator[int, float]: sent = yield 0 while sent >= 0.0: rounded = await round(sent) sent = yield rounded
В отличие от обычных генераторов, асинхронные генераторы не могут возвращать значение, поэтому параметр типа ReturnType отсутствует. Как и в случае с генератором, SendType ведет себя контравариантно.
Если генератор будет выдавать только значения, установите для параметра SendType значение None:
async def infinite_stream(start: int) -> AsyncGenerator[int]: while True: yield start start = await increment(start)
Также возможно задать этот тип явно:
async def infinite_stream(start: int) -> AsyncGenerator[int, None]: while True: yield start start = await increment(start)
В качестве альтернативы отметьте генератор как имеющий возвращаемый тип AsyncIterable[YieldType] или AsyncIterator[YieldType]:
async def infinite_stream(start: int) -> AsyncIterator[int]: while True: yield start start = await increment(start)
Устарело с Python 3.9: теперь
collections.abc.AsyncGeneratorподдерживает синтаксис аннотации[]. СмотритеGenericAlias.
Изменено в Python 3.13: параметр
SendTypeтеперь имеет значение по умолчанию.
typing.AsyncIterable(Generic[T_co]):Класс typing.AsyncIterable()общая версия абстрактного базового класса collections.abc.AsyncIterable.
Не рекомендуется с Python 3.9: теперь
collections.abc.AsyncIterableподдерживает синтаксис аннотации[]. СмотритеGenericAlias.
typing.AsyncIterator(AsyncIterable[T_co]):Класс typing.AsyncIterator() общая версия абстрактного базового класса collections.abc.AsyncIterator.
Устарело с Python 3.9: теперь
collections.abc.AsyncIteratorподдерживает синтаксис аннотации[]. СмотритеGenericAlias.
typing.Awaitable(Generic[T_co]):Класс typing.Awaitable() общая версия абстрактного базового класса collections.abc.Awaitable.
Устарело с Python 3.9: теперь
collections.abc.Awaitableподдерживает синтаксис аннотации[]. СмотритеGenericAlias.
typing.ContextManager(Generic[T_co, ExitT_co]):Класс typing.ContextManager() общая версия абстрактного базового класса collections.AbstractContextManager.
Устарело с Python 3.9: теперь
collections.abc.AbstractContextManagerподдерживает синтаксис аннотации[]. СмотритеGenericAlias.
Изменено в Python 3.13: добавлен необязательный параметр второго типа
ExitT_co.
typing.AsyncContextManager(Generic[T_co, ExitT_co]):Класс typing.AsyncContextManager() общая версия абстрактного базового класса collections.AbstractAsyncContextManager.
Устарело с Python 3.9: теперь
collections.abc.AbstractAsyncContextManagerподдерживает синтаксис аннотации[]. СмотритеGenericAlias.
Изменено в Python 3.13: добавлен необязательный параметр второго типа
ExitT_co.