PythonでWith構文に対応したクラスを作成する方法

Python

PythonでWith構文を利用すると、呼び出し側で明示的に「初期処理」、「終了処理」を呼び出さなくても自動的に実行されるようになります。

ファイルやデータベースへのアクセスで終了処理を呼び忘れClose漏れにならないようにすることなどが簡単にできます。

PythonでWith構文に対応したクラスを作成するには「__enter__()」と「__exit__()」メソッドを実装します。

PythonでWith構文に対応したクラスのクラスを作成する方法

PythonでWith構文を使うと利用者に初期処理と終了処理を意識させることなく、クラス側で安全に初期処理と終了処理を確実に実行するようにできるようになります。

With構文に対応したクラスを作成するには「__enter__()」と「__exit__()」メソッドを実装するこで実現できます。。

With構文__enter__と__exit__の実装方法

実際にPythonのWith構文で必要な__enter__と__exit__メソッドを実装してみます。

今回はsqlite3のデータベースに対してのアクセスするクラスをWith構文で実装します。

このクラスを利用する場合は

のように「with」で利用するクラス名を指定し、そのインスタンス名を「as」で指定します。

上記のソースを実行すると

となり、「__enter__ → withブロック内 → __exit__」と処理が実行されいることがわかります。

以上、PythonでWith構文に対応したクラスを作成する方法でした。