Czy można uzyskać dostęp do otaczającego menedżera kontekstu?

Zasadniczo istnieją trzy sposoby użycia instrukcji with:

Użyj istniejącego menedżera kontekstu:

with manager:
    pass

Utwórz menedżera kontekstu i połącz jego wynik ze zmienną:

with Manager() as result:
    pass

Utwórz menedżera kontekstu i odrzuć jego wartość zwracaną:

with Manager():
    pass

Jeśli umieściliśmy funkcjęget_manager() wewnątrz trzech bloków powyżej znajduje się implementacja, która może zwrócić otaczającego menedżera kontekstu lub przynajmniej ich__exit__ funkcjonować?

W pierwszym przypadku jest to oczywiście łatwe, ale nie mogę wymyślić sposobu na sprawienie, by działało w pozostałych dwóch. Wątpię, czy możliwe jest pobranie całego menedżera kontekstu, ponieważ stos wartości jest wyskakujący natychmiast poSETUP_WITH opcode. Jednak od czasu__exit__ funkcja jest przechowywana na stosie bloków przezSETUP_WITH, czy jest jakiś sposób na uzyskanie dostępu?

questionAnswers(3)

yourAnswerToTheQuestion