私は、Pythonでコンテキストマネージャを使用します。私の__exit__
メソッドからいくつかのログを取得したいPythonコンテキストマネージャから__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)を自由に感じてください。 :-) –