Python にクラスがあるとします。
class A(object):
def __del__(self):
print "Del!"
__del__
A
任意のインスタンスの削除/ガベージ コレクション時に呼び出されます。
クラスに対して同じことを行うことは可能ですか?クラス自体がガベージ コレクションされたときに、いくつかのメソッドを呼び出したいと思います。これは、スクリプトの終了時に行われると想定しています。
ご指摘ありがとうございます。
編集:私が予想したように、誰もが私をこのテクニックの使用から遠ざけようとしています (私はおそらく自分でそのようなコメントをするでしょう:))。
私は次のことをしたい: クリーンアップする必要がある静的メンバーを持つクラスがあります。
class A(object):
class Meta(type):
def __new__(mcs, name, bases, attrs):
attrs['conn'] = sqlite3.connect( DB_FILE )
return type.__new__(mcs, name, bases, attrs)
__metaclass__ = Meta
呼び出されたいのですA.conn.close()
が、プログラムが終了する直前、つまり のインスタンスA
がこれ以上作成されないことがわかっている場合です。でこれを実行できることはわかっていますがatexit
、これは非常に醜いようです。