問題一覧に戻る
上級高度な機能
問題101: コンテキストマネージャー自作
コンテキストマネージャーは、__enter__と__exit__メソッドを実装することで、with文で使用できるオブジェクトを作成する仕組みです。__enter__はリソースを取得して返し、__exit__はリソースを解放します。これにより、例外が発生してもリソースが確実に解放されることを保証できます。
# コンテキストマネージャー自作
class FileManager:
def __init__(self, filename, mode):
self.filename = filename
self.mode = mode
self.file = None
def (self):
self.file = open(self.filename, self.mode)
return self.file
def (self, exc_type, exc_val, exc_tb):
self.file.close()
# with文で使用
FileManager("test.txt", "w") as f:
f.write("Hello, Context Manager!")
print("File closed automatically")