¿Puede definir la sugerencia de tipo para una variable definida con la sintaxis with ?
with example() as x: print(x) Me gustaría escribir una sugerencia de lo anterior para decir que x es una str (como ejemplo).
La única solución que he encontrado es usar una variable intermedia, pero esto se siente extraño.
with example() as x: y: str = x print(y)No puedo encontrar un ejemplo en la documentación de escritura .
Por lo general, las anotaciones de tipo se colocan en los límites de la API. En este caso, el tipo debe deducirse de example.__enter__ . En caso de que esa función no declare ningún tipo, la solución es crear un archivo auxiliar correspondiente para ayudar al verificador de tipos a inferir ese tipo.
Específicamente, esto significa crear un archivo .pyi con la misma raíz que el módulo desde el cual se importó el Example . Luego se puede agregar el siguiente código:
class Example: def __enter__(self) -> str: ... def __exit__(self, exc_type, exc_value, exc_traceback) -> None: ...PEP 526, que se implementó en Python 3.6, le permite anotar variables. Puede utilizar, por ejemplo,
x: str with example() as x: [...]o
with example() as x: x: str [...]