私はいくつかのライブラリを継承するクラスを作成しています。親を呼び出さずにデストラクタをオーバーライドする
このクラスでは、デストラクタをオーバーライドしていますので、特定の方法でクリーニングを行う関数を呼び出すことができます。私がsuper().__ del __()と呼ぶのでなければ、クラスが破壊されたときにリソースが掃除されるということになりますか?このコードがメモリリークを引き起こす可能性はありますか?
class foo(some_library):
...
def __del__(self):
self.proprietary_cleaning_function()
は、それらが上書きされている方法で、異なる__init__または__del__のような関数であり、__del__後のpythonの仕事でガベージコレクションのメカニズムのでしょうか?
親クラスに\ _ \ _ del \ _ \ _メソッドが実装されていない場合と同じですか?つまり、オブジェクトdel? – GLaDOS
@GLaDOSいいえ、親クラスに '__del__'メソッドがない場合。しかし、メソッドが組み込まれている場合は、それを明示的に呼び出す必要があります。 – Kasramvd