计划在 Python 3.17 中移除¶
-
collections.abc.ByteString
计划在 Python 3.17 中移除。使用
isinstance(obj, collections.abc.Buffer)
来测试obj
是否在运行时实现了 缓冲区协议。 要用于类型标注,则使用Buffer
或是显式指明你的代码所支持类型的并集 (例如bytes | bytearray | memoryview
)。ByteString
原本是想作为bytes
和bytearray
的超类型的抽象基类提供。 不过,由于 ABC 不能有任何方法,知道一个对象是ByteString
的实例并不能真正告诉你有关该对象的任何有用信息。 其他常见缓冲区类型如memoryview
同样不能被当作是ByteString
的子类型(无论是在运行时还是对于静态类型检查器)。
-
在Python 3.14 之前,旧式的联合是通过私有类
typing._UnionGenericAlias
实现的。 实现已不再需要该类,但为向后兼容性保留了该类,并计划在 Python 3.17 中删除。 用户应使用已写入文档的内省助手函数,如typing.get_origin()
和typing.get_args()
,而不是依赖于私有的实现细节。typing.ByteString
自 Python 3.9 起已被弃用,计划在 Python 3.17 中移除。使用
isinstance(obj, collections.abc.Buffer)
来测试obj
是否在运行时实现了 缓冲区协议。 要用于类型标注,则使用Buffer
或是显式指明你的代码所支持类型的并集 (例如bytes | bytearray | memoryview
)。ByteString
原本是想作为bytes
和bytearray
的超类型的抽象基类提供。 不过,由于 ABC 不能有任何方法,知道一个对象是ByteString
的实例并不能真正告诉你有关该对象的任何有用信息。 其他常见缓冲区类型如memoryview
同样不能被当作是ByteString
的子类型(无论是在运行时还是对于静态类型检查器)。