Python3.8.5でのコンストラクターとデストラクターについて。
#クラス
class Ca(object): #Caクラスの定義
#コンストラクター
def __init__(self, a='名無しさん'): #インスタンスを生成したら勝手に実行されるメソッド
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('********************************') #さようなら ← このタイミングでデストラクタが起動
class Ca(object): #Caクラスの定義
#コンストラクター
def __init__(self, a='名無しさん'): #インスタンスを生成したら勝手に実行されるメソッド
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):
最後に実行したい処理
以上です。