Pythonインタープリターは、オブジェクトインスタンスがそれ自体への最後の参照を削除する場合を適切に処理しますか?
次の(明らかに役に立たない)モジュールについて考えてみます。
all_instances = []
class A(object):
def __init__(self):
global all_instances
all_instances.append(self)
def delete_me(self):
global all_instances
self.context = "I'm still here"
all_instances.remove(self)
print self.context
そして今の使用法:
import the_module
a = the_module.A()
the_deletion_func = a.delete_me
del a
the_deletion_func()
これでも出力されますI'm still here
が、オブジェクトインスタンスを収集しようとしているPythonのガベージコレクターとの競合状態はありますか?
オブジェクトの関数への参照は日を節約しますか?
インタプリタは、コードが現在実行されているオブジェクトへの参照を、終了するまで保持しますか?