Python デストラクタ

Vaibhhav Khetarpal 2021年10月22日
Python デストラクタ

Python オブジェクトをクリーンアップする必要がある場合、デストラクタが呼び出されます。これは基本的にコンストラクターとは完全に反対の役割を持ち、コンストラクターが実行する操作を逆にするために使用されます。デストラクタは主に、プログラムを編成し、コーディングの標準を実装するために展開されます。

このチュートリアルでは、Python でのデストラクタの使用方法を示します。

Python のガベージコレクターがメモリ管理を自動的に処理するため、Python でのデストラクタの必要性は、C++ などの他のプログラミング言語ほどではありません。ただし、デストラクタは Python に存在します。この記事では、デストラクタの使用法と機能について説明します。

Python では、__del__() 関数をデストラクタとして使用します。プログラマーが __del__() 関数を呼び出すと、すべてのオブジェクト参照が削除されます。これはガベージコレクションと呼ばれます。

デストラクタの構文は次のとおりです。

def __del__(self):
    # Write destructor body here

Python プログラムでデストラクタを使用する利点は次のとおりです。

  1. 不要なスペースを消費するオブジェクトが自動的に削除されるため、メモリスペースが解放されます。
  2. 自動的に呼び出されるので簡単です。

次のコードは、Python のデストラクタを使用しています。

class Fruits:
    # Calling constructor
    def __init__(self):
        print("Fruits created.")

    # Calling destructor
    def __del__(self):
        print("Destructor called, Fruits deleted.")


obj = Fruits()
del obj

上記のコードは、次の出力を提供します。

Fruits created.
Destructor called, Fruits deleted.

上記のコードは、プログラムが終了した後、またはオブジェクトへの指定されたすべての参照が削除されたときに、デストラクタが呼び出されたことを示しています。これは、特定のオブジェクトがスコープ外にシフトしたときではなく、ある時点の後、特定のオブジェクトの参照カウントの値がゼロになることを意味します。

デストラクタをさらに説明する別のコードを次に示します。

class Fruits:
    def __del__(self):
        print("Fruits deleted")


a = Fruits()
del a
a = Fruits()
b = a
del b
del a

上記のコードでは、クラス Fruits が定義されており、オブジェクト a はクラスへの参照であり、オブジェクト b はその参照 a のローカルコピーです。b が削除されると、関数はローカルコピーのみを保持し、他には何も保持しないため、呼び出されません。

プログラマーがどの言語を使用するかに関係なく、コンストラクターとデストラクタの両方がプログラミングの世界で不可欠です。デストラクタは、ガベージコレクションで重要な役割を果たします。コードの小さなチャンクに大きな変化は見られないかもしれませんが、メモリ使用量が最優先される複雑なプログラムや本番レベルのコードでは、デストラクタの重要性がはっきりとわかります。

Vaibhhav Khetarpal avatar Vaibhhav Khetarpal avatar

Vaibhhav is an IT professional who has a strong-hold in Python programming and various projects under his belt. He has an eagerness to discover new things and is a quick learner.

LinkedIn

関連記事 - Python Class