Рассмотренные здесь типы аннотаций абстрактных базовых классов соответствуют встроенным коллекциям, представленным в модуле 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[T_co], Generic[T_co, T_contra, V_co])
:Генератор может быть аннотирован общим типом 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
В качестве альтернативы, отметьте генератор как имеющий тип возвращаемого значения Iterable[YieldType]
или Iterator[YieldType]
:
def infinite_stream(start: int) -> Iterator[int]: while True: yield start start += 1
Устарело с Python 3.9: теперь
collections.abc.Generator
поддерживает синтаксис аннотации[]
. СмотритеGenericAlias
.
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[T_co], Generic[T_co, T_contra])
:Асинхронный генератор может быть аннотирован общим типом 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, 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
.
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])
:Класс typing.ContextManager()
общая версия абстрактного базового класса collections.AbstractContextManager
.
Устарело с Python 3.9: теперь
collections.abc.AbstractContextManager
поддерживает синтаксис аннотации[]
. СмотритеGenericAlias
.
typing.AsyncContextManager(Generic[T_co])
:Класс typing.AsyncContextManager()
общая версия абстрактного базового класса collections.AbstractAsyncContextManager
.
Устарело с Python 3.9: теперь
collections.abc.AbstractAsyncContextManager
поддерживает синтаксис аннотации[]
. СмотритеGenericAlias
.