все 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Сообщить о неточности