Python クラス #7

株式会社リュディアです。今回も引き続きクラスについてまとめていきます。

前回までの Python クラスについてのまとめへのリンクは以下を参考にしてください。

クラスについて一通りまとめましたので、まだまとめていなかったデストラクタについて記載しておきたいと思います。コンストラクタは既にまとめましたがデストラクタはコンストラクタと対になるものです。

コンストラクタはインスタンスが生成される際に一度だけ呼ばれる初期化関数の役割でしたが、デストラクタは不要である、と宣言された際に後処理をするために一度だけ呼ばれる後始末関数です。主にインスタンスの中で確保されていたメモリ領域を解放すために用いられます。以下の例を見てください。

class VegetableClass():
    __num_of_types = 800
   def __init__(self, c):
       self.__color = c
   def __del__(self):
       pass #後処理を記載
   @classmethod
   def num_of_types(cls):
       print('Called class method')
       return cls.__num_of_types
   def color(self):
       print('Called instance method')
       return self.__color

def __del__(self): がデストラクタの定義方法です。この例では具体的な後処理が浮かばなかったのでコメントだけにしています。どのようなときにデストラクタが呼ばれるのでしょうか。以下の例を見てください。

lemon = VegetableClass('yellow') # インスタンスを生成するのでコンストラクタが呼ばれる
いろいろな処理を実行
del lemon # lemon インスタンスは不要なので del するとデストラクタが呼ばれる

インスタンスを生成するときにコンストラクタが呼ばれ、インスタンスが不要になればそのインスタンスを del することでデストラクタが呼び出された後インスタンスが消滅します。

コードを解析して処理系がインスタンスがどのタイミングで不要になったかどうかを自動判別するというものではありません。ガーベジコレクション的な動きではないということです。

Python のクラスに関するまとめの続きは以下からどうぞ。

では、ごきげんよう。




この記事が気に入ったらサポートをしてみませんか?