__Enter__
ou __exit__
semble être difficile ...En utilisant le décorateur contextmanager, vous pouvez écrire relativement facilement et avec un sentiment similaire à un bloc ruby.
Ceci est un exemple du lien de référence
from contextlib import contextmanager
@contextmanager
def tag(name):
print "<%s>" % name
yield
print "</%s>" % name
>>> with tag("h1"):
... print "foo"
...
<h1>
foo
</h1>
C'est comme ça.
http://docs.python.jp/2/library/contextlib.html#module-contextlib
Recommended Posts