__del__ は Python の魔法のメソッドです。これらの魔法のメソッドを使用すると、オブジェクト指向プログラミングで非常に巧妙なトリックを実装できるようになります。ダンダー法とも呼ばれます。これらのメソッドは、プレフィックスとサフィックスとして使用される 2 つのアンダースコア (__) によって識別されます。
Python では、__new__() を使用してオブジェクトを作成し、__init__() を使用してそれを初期化します。ただし、オブジェクトを破棄するには __del__() を使用します。
###例###ただし、クラスが __del__ を定義しているにもかかわらず、オブジェクトを削除するときにそれを呼び出さない場合は、多くの理由が考えられます -
を呼び出す必要はありません。単にオブジェクトの参照カウントをデクリメントし、それがゼロになった場合に __del__() を呼び出します。
__del__() メソッドはランダムに呼び出すことができます。 - データ構造に循環リンクが含まれている場合、参照カウントは決してゼロには戻りません。 Python はそのようなサイクルを検出するアルゴリズムを実行しますが、ガベージ コレクターはデータ構造への最後の参照が消えてからしばらくしてから実行される可能性があります。
修正は次のとおりです -
- 循環参照を回避するには、weakref モジュールを使用します。これにより、参照カウントを増やさずにオブジェクトを指すことができます。 Weakref モジュールは、クラス # のインスタンスを取得するために使用することもできます。
以上が私の Python クラスは __del__ メソッドを定義していますが、オブジェクトを削除するときに呼び出されませんの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。