Zur Entfernung vorgesehen in Python 3.17¶
-
collections.abc.ByteStringist für die Entfernung in Python 3.17 geplant.Verwenden Sie
isinstance(obj, collections.abc.Buffer), um zur Laufzeit zu testen, obobjdas Buffer-Protokoll implementiert. Für die Verwendung in Typ-Annotationen verwenden Sie entwederBufferoder eine Union, die explizit die von Ihrem Code unterstützten Typen angibt (z. B.bytes | bytearray | memoryview).ByteStringwar ursprünglich als abstrakte Klasse gedacht, die als Obertyp sowohl fürbytesals auch fürbytearraydienen sollte. Da die ABC jedoch nie Methoden hatte, wusste man, dass ein Objekt eine Instanz vonByteStringwar, aber das sagte nie wirklich etwas Nützliches über das Objekt aus. Andere gängige Puffertypen wiememoryviewwurden ebenfalls nie als Untertypen vonByteStringverstanden (weder zur Laufzeit noch von statischen Typenprüfern).Weitere Einzelheiten finden Sie in PEP 688. (Beigesteuert von Shantanu Jain in gh-91896.)
-
Vor Python 3.14 wurden alte Unions mit der privaten Klasse
typing._UnionGenericAliasimplementiert. Diese Klasse wird für die Implementierung nicht mehr benötigt, wurde aber zur Abwärtskompatibilität beibehalten und soll spätestens in Python 3.17 entfernt werden. Benutzer sollten dokumentierte Introspektionshilfen wietyping.get_origin()undtyping.get_args()verwenden, anstatt sich auf private Implementierungsdetails zu verlassen.typing.ByteString, das seit Python 3.9 veraltet ist, ist für die Entfernung in Python 3.17 geplant.Verwenden Sie
isinstance(obj, collections.abc.Buffer), um zur Laufzeit zu testen, obobjdas Buffer-Protokoll implementiert. Für die Verwendung in Typ-Annotationen verwenden Sie entwederBufferoder eine Union, die explizit die von Ihrem Code unterstützten Typen angibt (z. B.bytes | bytearray | memoryview).ByteStringwar ursprünglich als abstrakte Klasse gedacht, die als Obertyp sowohl fürbytesals auch fürbytearraydienen sollte. Da die ABC jedoch nie Methoden hatte, wusste man, dass ein Objekt eine Instanz vonByteStringwar, aber das sagte nie wirklich etwas Nützliches über das Objekt aus. Andere gängige Puffertypen wiememoryviewwurden ebenfalls nie als Untertypen vonByteStringverstanden (weder zur Laufzeit noch von statischen Typenprüfern).Weitere Einzelheiten finden Sie in PEP 688. (Beigesteuert von Shantanu Jain in gh-91896.)