J'ai un code source Python, et je veux connaître le type d'une variable. Par exemple étant donné la chaîneObtenir les types dans l'expression Python en utilisant MyPy comme bibliothèque
"""
greeting = "Hello"
"""
Je veux avoir get_type('greeting') == str
. Ou un exemple plus complexe:
"""
def test(input: str):
output = len(input)
return str
"""
En pseudocode, je veux être capable de faire quelque chose comme:
>>> m = parse_module()
>>> m.functions['test'].locals['output'].get_type()
int
Il semble que cela devrait être possible avec des annotations de type et MyPy en Python 3, mais je ne peut pas comprendre comment. Les IDE comme le code VS sont devenus très bons pour deviner les types dans le code python, c'est pourquoi je suppose qu'il doit y avoir une manière exposée de le faire.
Il semble y avoir un module typed-ast, qui est également utilisé par MyPy, qui me fait partie du chemin. Cependant, cela ne fait aucune inférence de type ou de propagation, il me donne juste les annotations explicites autant que je comprends. MyPy en tant qu'api, mais il ne vous permet que d'exécuter le vérificateur et renvoie les mêmes messages d'erreur que l'outil de ligne de commande. Je suis à la recherche d'un moyen de «pénétrer» dans MyPy, et obtenir une partie de l'information inférée - ou une autre solution à laquelle je n'ai pas pensé.
Vous pourriez utiliser le module 'inspect'. C'est un assistant d'introspection Python. –
Im confus pouvez-vous pas simplement utiliser la fonction 'type()'? – Joe
J'ai le code comme une chaîne, et je ne veux pas l'exécuter. Je veux obtenir les types de variables contenues dans le code source. – jdm