with statement

python には、with というファイルのIO 関連のステートメントがある。

ex.

try:
f = open('hoge', 'w')
print('This is ', file=f)
except IOError as err:
print('File IO Error : ' + str(err))
finally:
if 'f' in locales():
f.close()

これは、下のように書ける

try:
with open('hoge', 'w') as f:
print('This is ', file=f)
except IOError as err:
print('FIle IO Error : ' + str(err))

というように、幾分簡単に書けるようになる

    • 追記--

__enter__ と __exit__ のメソッドを実装すれば、どんなクラスでも with を使えるようになる。
__enter__ の戻り値は、as と共に利用された時に as の後ろの変数に代入される。
__exit__ で True を返すと with ブロックの外側に例外が伝わらなくなる。