編集:NPEのコメントのために質問を一般化しました。
Python 2.7.3インタラクティブセッションの場合:
>>> class Foo(object):
... pass
...
>>> type("Bar", (Foo,), {})
<class '__main__.Bar'>
>>> Foo.__subclasses__()
[<class '__main__.Bar'>]
>>>
また:
>>> class Foo(object):
... pass
...
>>> class Bar(Foo):
... pass
...
>>> Foo.__subclasses__()
[<class '__main__.Bar'>]
>>> del Bar
>>> Foo.__subclasses__()
[<class '__main__.Bar'>]
関数Bar
を介してまだ利用できるのはなぜですか?__subclasses__
ガベージコレクションになると思っていました。
逆に、ガベージコレクションを行いたい場合は、どうすればよいですか?