J'ai lu PEP 613 (alias de type explicite)
J'ai suivi python / peps récemment pour suivre les mises à jour PEP, mais GvR est [PEP 613 (Alias de type explicite)](https: / /www.python.org/dev/peps/pep-0613/) a dit quelque chose comme le mettre en 3.10 (au lieu de 3.9) donc je l'ai lu un peu.
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
Aperçu
- PEP-484 (Type Hints) mentionne l'existence d'alias de type, mais détaille comment les définir. N'a pas
- Pour l'instant, les ** variables globales ** et ** les variables sans indication de type ** sont considérées comme des alias de type.
- Les problèmes de référence directe et les problèmes de portée ont tendance à survenir
- Je pourrai donc définir explicitement les alias de type
- Vous pouvez toujours définir des alias de type implicites
- Le statut est Accepté donc il sera éventuellement implémenté (probablement 3.10)
approche
- Ajouter un nouveau
typing.TypeAlias
- Lors de la définition d'un alias de type, écrivez une variable de type alias de type comme
T: TypeAlias = int
- Considérez les variables définies au niveau global comme des alias de type
- Vous pouvez écrire
T: TypeAlias =" int "
lorsque vous faites ForwardReference
Exemple
Dans la grammaire explicite, il est traité comme suit.
#Juste une variable globale
x = 1
x: int = 1
#Juste une variable globale
x = int
x: Type[int] = int
#Tapez un alias
x: TypeAlias = int
x: TypeAlias = “MyClass”
Impressions
- Considérant Forward Refernece, il était nécessaire de traiter une simple chaîne de caractères constante comme ** peut pointer vers un type **, mais maintenant elle peut être écrite sémantiquement avec une syntaxe explicite.
- Cependant, cela ne signifie pas que la syntaxe implicite disparaîtra, donc rien ne changera.
- Pour les utilisateurs, il est prudent d'ajouter le type
TypeAlias
pour le moment.
- Cependant, sa mise en œuvre est (au plus tôt) à partir de la 3.10, donc elle sera disponible après l'automne prochain ...
- Je comprends la raison et il n'y a aucune raison de m'y opposer, mais j'ai seulement le sentiment qu'il ne sera pas utilisé car il est trop tard
- Je n'ai pas confirmé l'opération, mais il semble qu'elle soit déjà implémentée dans pyre?