J'ai lu PEP 585 (Type Hinting Generics In Standard Collections)

Lorsque j'enquêtais sur l'origine de l'attribut «origin», le PEP PEP 585 --Type Hinting Generics In Standard Collections Je l'ai trouvé, alors j'ai oublié le but initial et je l'ai écrémé. Je suis toujours en état de brouillon, donc je ne suis pas sûr qu'il sera adopté à l'avenir, mais je prendrai note de ma compréhension.

Aperçu

le terme

approche

Utilisez list ou dict au lieu de la précédente typing.List ou typing.Dict. c'est tout.

def find(haystack: dict[str, list[int]]) -> int:
    ...

Ce qu'il ne faut pas faire

Note

En interne, il est censé créer une instance de types.GenericAlias. Par conséquent, les informations de type peuvent être récupérées en utilisant __origin__ ou __args__.

StrList = list[str]

assert isinstance(StrList, types.GenericAlias)
assert StrList.__origin__ is list
assert StrList.__args__ is (str,)

Impressions

Postscript

Avant que je ne le sache, il a été décidé d'adopter PEP 585 (Accepté), et il était disponible en 3.9.0a6. Voici l'état de 3.9-dev installé il y a quelque temps.

$ python3.9
Python 3.9.0a6+ (heads/master:7f7e706, May  9 2020, 13:35:20)
[Clang 11.0.3 (clang-1103.0.32.59)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> list[int]
list[int]
>>> dict[str, int]
dict[str, int]
>>> tuple[int, ...]
tuple[int, ...]

Recommended Posts

J'ai lu PEP 585 (Type Hinting Generics In Standard Collections)
J'ai lu PEP 613 (alias de type explicite)
Maîtriser les indices de type dans PyCharm
Je ne peux pas entrer la norme dans le sous-processus ...
J'ai lu PEP 612 (Variables de spécification des paramètres)
J'ai lu PEP 604 (syntaxe complémentaire pour Union []).
J'ai lu PEP-362 (objet de signature de fonction)
J'ai lu PEP 618 (Ajouter une vérification de longueur facultative à la fermeture éclair)
J'ai lu PEP 584 (Add Union Operators To dict)
J'ai lu PEP 614 (Relaxing Grammar Restrictions on Decorators)
J'ai lu PEP-593 (fonction flexible et annotations variables)