Python
 Computer >> コンピューター >  >> プログラミング >> Python

デストラクタメソッド__del__()はPythonでどのように機能しますか?


__del __()メソッドは、デストラクタメソッドとして知られています。オブジェクトへのすべての参照が削除された後に発生する、オブジェクトがガベージコレクションされるときに呼び出されます。

単純なケースでは、これはdel xのような変数を削除した直後、またはxがローカル変数の場合は、関数が終了した直後である可能性があります。特に、循環参照がない限り、標準のPython実装であるCPythonはすぐにガベージコレクションを行います。

Pythonガベージコレクションの唯一の特性は、すべての参照が削除された後に発生することです。したがって、これは必ずしも直後に発生するわけではなく、まったく発生しない場合もあります。

さらに、変数は、たとえば、さまざまな理由で長期間存続する可能性があります。伝播する例外またはモジュールのイントロスペクションにより、変数参照カウントを0より大きく保つことができます。また、変数は循環参照の一部にすることができます。ガベージコレクションがオンになっているCPythonは、すべてではありませんが、ほとんどのサイクルを中断します。 P>

__del __には有効なユースケースがあります。たとえば、オブジェクトXがYを参照し、Y参照のコピーをグローバルキャッシュに保持する場合(cache ['X-> Y'] =Y)、Xに対しては礼儀正しくなります。 __del__は、キャッシュエントリも削除します。

デストラクタが必要なクリーンアップを提供することがわかっている場合は、それを直接x .__ del __()と呼ぶことをお勧めします。


  1. Pythonファイルでアンダースコア_はどのように機能しますか?

    アンダースコア(_)はPythonでは特別です。 Pythonでアンダースコアを使用する場合は5つあります。 1.インタプリタに最後の式の値を格納するため。 Pythonインタープリターは、最後の式の値を「_」と呼ばれる特別な変数に格納します。 例 >>> 12 + 10 22 >>> _ 22 2.特定の値を無視するため。 アンダースコアは、elixir、erlang、pythonなどのいくつかの言語で特定の値を無視するためにも使用されます。特定の値が不要な場合、または値が使用されていない場合は、値をアンダースコアに割り当ててください。 例 >

  2. mkdir -pはPythonでどのように機能しますか?

    mkdir -pは、親が存在する場合でも再帰的なディレクトリ作成を作成できるようにするために使用されます。ディレクトリを再帰的に作成するには、作成するパスをos.makedirs(path)に指定します。ディレクトリを復元的に作成するには、exists_okをTrueとして指定して、既存のフォルダを許可する必要があります。 >>> import os >>> os.makedirs('my_folder/another/folder', exists_ok=True)