Python 3.5+typingпонятие
typing.BinaryIO
потоки ввода-вывода
Тип бинарных файловых потоков (открытых в режиме 'b') для аннотаций.
Синтаксис
def f(stream: typing.BinaryIO) -> None: ...
По сути это IO[bytes]: то, что возвращает open(path, 'rb'), и работает оно с bytes, а не str — для текстовых потоков есть отдельный TextIO. Сам класс не инстанцируют и не наследуют, он нужен только как аннотация типа.
Примеры
from typing import IO, BinaryIO
import io
print(BinaryIO.__name__) # → BinaryIO
print(issubclass(BinaryIO, IO)) # → True
from typing import IO, BinaryIO
import io
def read_head(f: BinaryIO) -> bytes: return f.read(4)
print(read_head.__annotations__['f'] is BinaryIO) # → True
print(read_head(io.BytesIO(b'binary data'))) # → b'bina'
print(isinstance(io.BytesIO(), BinaryIO)) # → False
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности