typing.IO
、typing.TextIO
和typing.BinaryIO
可用于注释类似文件的对象,例如那些由 open()
返回的。然而,在 Python 3.8 之后,它们似乎已被弃用,并将在 Python 3.12 中删除。与许多其他弃用(例如被 typing.List[T]
取代的 list[T]
)不同,这些 IO 类型没有明确的迁移路径。
未来应该如何在现代 Python 中注释类似文件的对象类型?
Python 3.9 docs 有一个不明确的通知:
“这些类型也位于
命名空间中,类型检查器从未支持该命名空间,因此将被删除。”typing.io
在讨论中查看更多内容 “[文档] 令人困惑的 Typing.IO 弃用通知”
在文档的新版本中它已修复:
“
命名空间已弃用并将被删除。这些类型应该直接从输入中导入。”typing.io