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