计划在 Python 3.17 中移除¶
-
collections.abc.ByteString计划在 Python 3.17 中移除。要测试
obj是否在运行时实现了缓冲区协议,请使用isinstance(obj, collections.abc.Buffer)。在类型注解中,请使用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 中移除。要测试
obj是否在运行时实现了缓冲区协议,请使用isinstance(obj, collections.abc.Buffer)。在类型注解中,请使用Buffer或显式指定代码支持的类型的联合类型(例如bytes | bytearray | memoryview)。ByteString最初旨在作为一个抽象类,用作bytes和bytearray的超类型。然而,由于该 ABC 从未有任何方法,因此知道一个对象是ByteString的实例实际上从未告诉你有用的关于该对象的信息。其他常见的缓冲区类型,如memoryview,也从未被理解为ByteString的子类型(无论是运行时还是通过静态类型检查器)。