新しいスタイルのクラスと古いスタイルのクラスでオブジェクトの破棄が異なる動作をする理由を理解しようとしています。
class Wrapper():
class Inner(object):
def __del__(self):
print 'Inner destructor'
innerInstance = Inner()
def __del__(self):
print 'Wrapper destructor'
if __name__ == '__main__':
x = Wrapper()
終了時に、これは次のように出力します。
Wrapper destructor
Inner destructor
ただし、新しいスタイルクラスとしてWrapperを使用すると、ラッパーデストラクタのみが呼び出され、出力は次のようになります。
Wrapper destructor
誰かが上記の動作を説明できますか?