Python Glossary English

все Python 3ioпонятие

io.BufferedIOBase

абстрактные базы

Абстрактный базовый класс буферизованных бинарных потоков (BytesIO, BufferedReader/Writer и др.).

Синтаксис

issubclass(cls, io.BufferedIOBase)

Практический смысл этого ABC — отличить буферизованный бинарный поток от текстового: open(path, 'rb') отдаёт BufferedReader, а open(path) — TextIOWrapper, и isinstance по базовому классу надёжнее разбора атрибута mode. У буферизованных потоков read(n) возвращает ровно n байт, пока не упрётся в конец файла, — в отличие от сырых RawIOBase, где короткое чтение законно в любой момент.

Примеры

import io
print(issubclass(io.BytesIO, io.BufferedIOBase))   # → True
print(issubclass(io.BufferedReader, io.BufferedIOBase))   # → True
print(issubclass(io.StringIO, io.BufferedIOBase))   # → False
print(issubclass(io.BufferedIOBase, io.IOBase))   # → True
buf = io.BytesIO(b'hello')
print(isinstance(buf, io.BufferedIOBase))   # → True
print(io.BufferedIOBase().read())   # → io.UnsupportedOperation

См. также

Открыть в полном глоссарииdocs.python.orgСообщить о неточности