with

Python2.5から導入されたwith。これはDelphiVisualBasicのwithみたいにブロック内でレシーバを省略できるようになるわけではなく、Rubyでopenをブロック付きで呼び出したみたいに自動でcloseなどの後始末をするための構文。C++ならスマートポインタみたいなものと思えば間違いない。

with open("file", "r") as file:
  file.write("")

自分のクラスでやりたい場合は__enter__()と__exit__()メソッドを実装すればいいだけ。この例ならfileは__exit__()内でclose()しているものと思われる。それぞれ前処理と後処理に対応し、Rubyのブロック付きメソッドならyieldの前と後の処理に対応し、C++なら(auto変数やスマートポインタが指すオブジェクトであれば)コンストラクタとデストラクタが対応する。