我正在编写一个函数,它将文件指针作为参数并写入它。我想为该参数添加一个类型提示:
def write_some_stuff(fp: _io.TextIOWrapper):
...
_io.TextIOWrapper
是type(open(...))
给我的。
我还应该使用其他什么吗?
答案 0 :(得分:2)
如果您想要更通用一些并允许任何处于文本模式的文件对象(即angleBetweenLightAndNormal
返回Unicode字符串),您可能希望提示您采用read()
参数。除了更常见的io.TextIOBase
实例之外,这将允许io.StringIO
的实例。
即使您坚持io.TextIOWrapper
,您也不需要io
模块名称的下划线。常规TextIOWrapper
模块将所有相关类型从io
模块导入其自己的命名空间。
答案 1 :(得分:1)
您应使用Python 3.5中引入的typing
模块:
typing.TextIO
最适合这种情况。
通用类型
IO[AnyStr]
及其子类TextIO(IO[str])
和BinaryIO(IO[bytes])
代表I / O流的类型,例如open()
返回的I / O流。
在您的示例中:
from typing import TextIO
def write_some_stuff(fp: TextIO):
...