¿Es posible acceder al gestor de contexto adjunto?
Hay esencialmente tres formas de usar la sentencia with:
Utilice un administrador de contexto existente:
with manager:
pass
Cree un administrador de contexto y enlace su resultado a una variable:
with Manager() as result:
pass
Cree un administrador de contexto y descarte su valor de retorno:
with Manager():
pass
Si tenemos lugar una función.get_manager()
Dentro de los tres con los bloques anteriores, ¿existe alguna implementación que pueda devolver el administrador de contexto adjunto, o al menos su__exit__
¿función?
Obviamente, es fácil en el primer caso, pero no puedo pensar en una manera de hacer que funcione en los otros dos. Dudo que sea posible obtener todo el administrador de contexto, ya que la pila de valores aparece inmediatamente después de laSETUP_WITH
opcode Sin embargo, desde la__exit__
La función se almacena en la pila de bloques porSETUP_WITH
, ¿hay alguna forma de acceder a ella?