Python 3.17 中待移除的項目¶
-
collections.abc.ByteString預計在 Python 3.17 中移除。使用
isinstance(obj, collections.abc.Buffer)來測試obj是否在 runtime 實作了緩衝區協定。在型別註解的使用中,請用Buffer或明確指定你的程式碼所支援型別的聯集(例如bytes | bytearray | memoryview)。ByteString最初被設計為一個抽象類別,以作為bytes和bytearray的超型別 (supertype)。然而由於 ABC 從未擁有任何方法,知道一個物件是ByteString的實例從未真正告訴你任何關於該物件的有用資訊。其他常見的緩衝區型別如memoryview也從未被理解為ByteString的子型別(無論是在 runtime 還是由靜態型別檢查器)。
-
在 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是否在 runtime 實作了緩衝區協定。在型別註解的使用中,請用Buffer或明確指定你的程式碼所支援型別的聯集(例如bytes | bytearray | memoryview)。ByteString最初被設計為一個抽象類別,以作為bytes和bytearray的超型別 (supertype)。然而由於 ABC 從未擁有任何方法,知道一個物件是ByteString的實例從未真正告訴你任何關於該物件的有用資訊。其他常見的緩衝區型別如memoryview也從未被理解為ByteString的子型別(無論是在 runtime 還是由靜態型別檢查器)。