저는 파이썬에서 컨텍스트 관리자를 사용합니다. 에서 일부 로그를 다시 얻으려면 내 __exit__
방법. 그래서 내 코드에 다음과 같은 기록합니다파이썬 컨텍스트 관리자에서 __exit__의 반환 값을 검색 할 수 있습니까?
class MyContextManager:
def __init__(self, value1, value2)
self.value1 = value1
self.value2 = value2
def __enter__(self)
# Do some other stuff
return self
def __exit__(self, exc_type, exc_val, exc_tb):
# Do some tear down action, process some data that is
# created in __enter__ and log those results
return my_results
with MyContextManager(value1=my_value1, value2=my_value2) as manager:
# Do some stuff
어떻게 내가 블록 내의 후 (또는 끝) __exit__
에서 반환 my_results에 액세스 할 수 있습니다. 심지어 __exit__
메서드에서 다른 True를 반환하는 것이 합법입니까?
대단히 감사합니다! 유용한 정보! :) MyContextManager의 인스턴스가 with 블록 뒤에 여전히 살아 있다는 것을 알지 못했습니다. –
도움이 된 것을 기쁘게 생각합니다! 유용하다고 생각되면 [내 대답 수락] (http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work)을 자유롭게 느껴보십시오. :-) –