読者です 読者をやめる 読者になる 読者になる

print 'Hello YKazu'

('Python', 'Javascript')

コンテキストマネージャ

Python2

正直なところ、直感的に理解出来なかった。そこで、独断と偏見に基づき、整理する。

コンテキストマネージャとは、

  1. __enter__()メソッドと__exit__()メソッドを少なくとも定義しているクラス
  2. 上記以外のメソッドを定義していてもよい
  3. withステートメントインスタンス化する
class ContextManager:
    def __enter__(self):
        print '1'
        return self

    def __exit__(self, exc_type, exc_value, traceback):
        print '4'

    def foo(self):
        print '3'

with ContextManager() as cm:
    print '2'
    cm.foo()

# 実行結果
#
# 1
# 2
# 3
# 4