created: 2018-11-26T03:21:22.000Z

pythonの__del__

軽くドキュメントを読んでメモ

次のような雰囲気のメソッドのようだ

  • デストラクタとして使わない
  • やむおえない時だけ使う
  • 変な使い方はしない

ドキュメントの記載

デストラクタ的に__del__が定義できる

インスタンスが破棄されるときに呼び出されます。 これはファイナライザや (適切ではありませんが) デストラクタとも呼ばれます。

ただしインタプリタ終了時に呼ばれるとは限らない

インタプリタが終了したときに、残存しているオブジェクトの del() メソッドが呼び出される保証はありません。

辺な使い方が出来るが推奨されていない

del() メソッドが破棄しようとしているインスタンスへの新しい参照を作り、破棄を送らせることは (推奨されないものの) 可能です。

リファレンスカウント

こちらの資料だとリファレンスカウントが0になったときに呼ばれると書いてある

オブジェクトの参照カウントが 0 になったとき、そのオブジェクトの del メソッドが(もし定義されていれば)呼ばれる。その意味で、del メソッドはデストラクタとも呼ばれる。このメソッドで、ファイルハンドルをクローズするとか、メンバ変数として保持していたリソースを解放するといった処理を行うことが想定されている。

ただし、この資料は2010年のもので今(python3)は違うのかもしれない