おぼえがき

過ちては則ち改むるにうんぬんかんぬん

コンストラクターとデストラクターについて(Python)

f:id:feci:20210726231508j:plain

Python3

 

Python3.8.5でのコンストラクターとデストラクターについて。

#クラス
class Ca(object):                              #Caクラスの定義
  #コンストラクター
  def __init__(selfa='名無しさん'):          #インスタンスを生成したら勝手に実行されるメソッド
    self.bb = a                                #この変数名をself.〇〇とすることで他のメソッドでも呼び出せる
  #メソッド①
  def fa1(self):
    print('こんにちは{}さん'format(self.bb)) #self.〇〇なのでこのメソッドでもself.nameを呼び出せる
    self.fa2()                                 # fa2メソッドの処理を呼び出せる
  #メソッド②
  def fa2(self):                               #このスクリプトだとここの引数はべつにselfじゃなくてもいい
    print('今日はいい天気ですね')
  #デストラクター
  def __del__(self):                           #このクラスを呼び出したら終了時に勝手に実行されるメソッド
    print('さようなら')

#実行
ca = Ca('ボブ')                                #この段階でコンストラクタとデストラクタの起動は確定
ca.fa1()                                       #こんにちはボブさん\n今日はいい天気ですね

#del ca                                        #任意のタイミングでデストラクタを呼び出したい場合はこうする
print('********************************')      #さようなら ← このタイミングでデストラクタが起動

コンストラクターとは、そのクラスのインスタンスを生成したときに強制的に実行されるメソッドのことです。

コンストラクターはクラスの初期化とも呼ばれます。

 

デストラクターは、そのクラスのインスタンスを生成したあとのいずれかのタイミングで強制的に実行されるメソッドのことです。

 

まず、そのクラスのインスタンスを生成した時点でデストラクターが起動されることは確定しています。

問題はそれが実行されるタイミングですが、これには以下のようなパターンがあります。

 

 ①インスタンス生成後またはインスタンス実行後のスクリプトの終了時。
 ②del文でそのインスタンスを削除したとき。

 

 

コンストラクターとデストラクターの定形は以下のとおりです。

 

def __init__(self, 引数2, ...):
    最初に実行したい処理;

 

def __del__(self):
    最後に実行したい処理

 

 

以上です。