¿Puedes definir la sugerencia de tipo para una variable definida con la withsintaxis?
with example() as x:
    print(x)
Me gustaría escribir una pista de lo anterior para decir que xes un 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 .
                    
                        python
                                python-3.x
                                type-hinting
                                
                    
                    
                        Reactgular
fuente
                
                fuente

xcomo el tipo de retorno deexample().__enter__()?xcuando es simplemente el tipo de retorno deexample.__enter__? Idealmente, ha anotado ese método / función.xno es el valor de retorno deexample; Es el valor de retorno deexample().__enter__().example. Anotarexample.__enter__significa una anotación, mientras que con su enfoque tendría que anotar en todos los lugares donde se usa ese administrador de contexto, además, en general, ¿cómo se supone que un usuario sabe cuál es el tipo de retorno de una API de todos modos si no se proporciona?Respuestas:
PEP 526, que se ha implementado en Python 3.6, le permite anotar variables. Puedes usar, por ejemplo,
o
fuente
for. Gran respuesta, gracias.__enter__devolverá el método, escribirxno sirve para nada.mypyfelizmente permitirá vincular un valor de cualquier tipox.xcomostren ambos casos, peromypyno lo hace.Por lo general, las anotaciones de tipo se colocan en los límites de API. En este caso, el tipo debe inferirse de
example.__enter__. En caso de que la función no declare ningún tipo, la solución es crear un archivo apéndice correspondiente para ayudar al verificador de tipos a inferir ese tipo.Específicamente, esto significa crear un
.pyiarchivo con la misma raíz que el módulo desde el queExamplese importó. Luego se puede agregar el siguiente código:fuente