Как мы можем создать экземпляр `TextIOWrapper`? - PullRequest
0 голосов
/ 31 мая 2019

https://docs.python.org/3/library/io.html#overview говорит, что мы можем создать экземпляр TextIOBase с помощью

f = open("myfile.txt", "r", encoding="utf-8")

и BufferedIOBase экземпляр

f = open("myfile.jpg", "rb")

Как мы можем создать экземпляр TextIOWrapper? Например, можно ли это сделать с помощью open()?

1 Ответ

1 голос
/ 31 мая 2019

За документы (мой акцент):

Тип объекта файла, возвращаемого функцией open (), зависит от режима.Когда open () используется для открытия файла в текстовом режиме ('w', 'r', 'wt', 'rt' и т. Д.), Он возвращает подкласс io.TextIOBase (, в частности, io.TextIOWrapper ).При использовании для открытия файла в двоичном режиме с буферизацией возвращаемый класс является подклассом io.BufferedIOBase.

Действительно, f = open("myfile.txt", "r", encoding="utf-8") возвращает TextIOWrapper:

In [18]: f = open("data", "r", encoding="utf-8")

In [19]: type(f)
Out[19]: _io.TextIOWrapper

In [20]: type(f).mro()
Out[20]: [_io.TextIOWrapper, _io._TextIOBase, _io._IOBase, object]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...