Pythonのデストラクター・__del__()
Pythonのクラスにはクラスが破棄される時に呼ばれるデストラクター「__del__()」があります。
Pythonのデストラクター__del__()
Pythonのクラスにはコンストラクター__new__()、__init__()の対になる機能を持つデストラクターの__del__()が存在します。
デストラクターはインスタンスが破棄されるタイミングで自動で呼び出されます。
通常はクラスで終了処理が必要な場合などに__del__を使って行います。
class MyClass(): def __new__( cls ) : self = super().__new__( cls ) print( "__new__() myId={}".format( id( self ))) return self def __init__( self ) : print( "__init__() myId={}".format( id( self ))) self.myVariable = 10 def __del__( self ) : print( "__del__() myId={}".format( id( self ))) cl1 = MyClass() cl2 = MyClass()
上記の実行結果は
__new__() myId=1297822089864 __init__() myId=1297822089864 __new__() myId=1297822090056 __init__() myId=1297822090056 __del__() myId=1297822089864 __del__() myId=1297822090056
となり、起動したPythonプログラムが終了するタイミングでデストラクターの__del__()が呼び出されていることがわかります。
まとめ
Pythonのクラスにはコンストラクター__new__()、__init__()の対になる機能を持つデストラクターの__del__()が存在し、インスタンスオブジェクトが破棄されるタイミングで自動で呼び出されます。
リンク