Python Glossary English

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

io.IOBase

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

Абстрактный базовый класс всех потоков ввода-вывода (файлов и StringIO/BytesIO); задаёт общий интерфейс close/readable/writable/seekable.

Синтаксис

issubclass(cls, io.IOBase)

isinstance(obj, io.IOBase) подтверждает только «это поток», но не что у него есть read() или write(): сами эти методы объявлены уже в наследниках, а IOBase задаёт лишь close(), закрытие по with и запросы readable()/writable()/seekable(). Обращение к уже закрытому потоку даёт ValueError с текстом про I/O operation on closed file, а не OSError, — ловить надо именно ValueError.

Примеры

import io
print(issubclass(io.RawIOBase, io.IOBase))   # → True
print(isinstance(io.StringIO(), io.IOBase))   # → True
print(issubclass(io.TextIOBase, io.IOBase))   # → True
s = io.StringIO('abc')
print(s.readable(), s.writable(), s.seekable())   # → True True True
s.close()
print(s.closed)   # → True
print(s.read())   # → ValueError

См. также

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