ふわふわpython-with文の2つの実装方法

562 ワード

1つ目は、コンテキストマネージャプロトコル、すなわち魔法メソッドを実装することです.enter__および_exit__.
class Foo:
    def __enter__(self):
        print 'in'
 
    def __exit__(self, type, value, trace):
        print 'out'
が定義されたら、このように使用できます.
with Foo():
    print 'do something'
出力:
in
do something
out
2つ目はcontextlibモジュールの使用です 
from contextlib import contextmanager
@contextmanager
def Foo():
    print 'in'
    yield
    print 'out'