0
クラスのインスタンスが何かを実行してwith
ステートメントのスコープを終了する前に上書きできるクラス属性はありますか?クラスが `with`ステートメントのスコープを終了したときにタスクを実行するようにする
with open(PATH, 'wb') as f:
f.write("SOME TEXT")
私はこのようなクラスの寿命のために持続するライターを必要とするクラスを書いた場合:
例えば、我々は我々がそれを完了したら、我々はファイルハンドルを閉じることを確認することができます:
class MyWriter(object):
def __init__(self, path):
self.f = open(path, 'wb')
self.buffer = ''
def write(self, text):
self.buffer += text
# Just a toy example, naively relying on file system
# page cache should outperform this
if len(self.buffer) >= 4096:
self.flush()
def flush(self):
f.write(self.buffer)
self.buffer = ''
def close(self):
self.flush()
self.f.close()
その後、私はwith
の範囲を出る前に.close()
のコールとフラッシュを強制したいと思います:
with MyWriter(PATH) as mw:
mw.write("SOME TEXT")