Python 3.5+typingпонятие
typing.IO
потоки ввода-вывода
Обобщённый тип файловых объектов (потоков) для аннотаций; параметризуется типом элемента (str или bytes).
Синтаксис
def f(stream: typing.IO[str]) -> None: ...
На практике вместо IO[str] и IO[bytes] чаще берут специализированные TextIO и BinaryIO — те же потоки, но с дополнительными атрибутами (encoding, buffer и т.п.) и более читаемым именем. Сам IO нужен, когда параметру важен только факт «это поток» независимо от конкретного класса — результат open(), io.StringIO, обёртка над сокетом.
Примеры
from typing import IO
import io
print(IO.__name__) # → IO
print(IO[str]) # → typing.IO[str]
from typing import IO
import io
def read_all(stream: IO[str]) -> str: return stream.read()
print(read_all(io.StringIO('hello world'))) # → hello world
print(isinstance(io.StringIO(), IO)) # → False
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности