[PYTHON] Ich habe PEP 613 (Explicit Type Aliases) gelesen.
Ich habe kürzlich python / peps verfolgt, um PEP-Updates zu verfolgen, aber GvR ist [PEP 613 (Explicit Type Aliases)](https: / /www.python.org/dev/peps/pep-0613/) sagte so etwas wie das Einfügen in 3.10 (anstelle von 3.9), also las ich es ein bisschen.
I think it’s too late to add to 3.9, but it can be added to typing_extensions, and of course 3.10 is open (the master branch is now 3.10).
https://github.com/python/peps/issues/1412#issuecomment-633641359
Überblick
- PEP-484 (Type Hints) erwähnt die Existenz von Typ-Aliasen, erläutert jedoch deren Definition. Nicht
- Derzeit werden ** globale Variablen ** und ** Variablen ohne Typhinweise ** als Typaliasnamen betrachtet.
- Weiterleitungsreferenzprobleme und Umfangsprobleme treten häufig auf
- So kann ich Typaliasnamen explizit definieren
- Sie können weiterhin implizite Typ-Aliase definieren
- Der Status wird akzeptiert, sodass er irgendwann implementiert wird (wahrscheinlich 3.10).
Ansatz
- Fügen Sie eine neue
typing.TypeAlias
hinzu
- Wenn Sie einen Typalias definieren, schreiben Sie eine Variable vom Typ Alias vom Typ
T: TypeAlias = int
- Betrachten Sie auf globaler Ebene definierte Variablen als Typaliasnamen
- Sie können "T: TypeAlias =" int "" schreiben, wenn Sie ForwardReference ausführen
Beispiel
In der expliziten Grammatik wird es wie folgt behandelt.
#Nur eine globale Variable
x = 1
x: int = 1
#Nur eine globale Variable
x = int
x: Type[int] = int
#Geben Sie einen Alias ein
x: TypeAlias = int
x: TypeAlias = “MyClass”
Impressionen
- In Anbetracht von Forward Refernece war es notwendig, eine einfache String-String-Konstante so zu behandeln, dass ** auf einen Typ verweist **, aber jetzt kann sie semantisch mit expliziter Syntax geschrieben werden.
- Dies bedeutet jedoch nicht, dass die implizite Syntax verschwindet, sodass sich nichts ändert.
- Für Benutzer ist es sicher, vorerst den Typ "TypeAlias" hinzuzufügen.
- Die Implementierung erfolgt jedoch (frühestens) ab 3.10, sodass sie ab dem nächsten Herbst verfügbar sein wird ...
- Ich verstehe den Grund und habe keinen Grund, mich dagegen zu stellen, aber ich habe nur das Gefühl, dass es nicht verwendet wird, weil es zu spät ist, herauszukommen.
- Ich habe die Operation nicht bestätigt, aber es scheint, dass sie bereits in Scheiterhaufen implementiert ist?