このコードが予想される出力「0 1 2 done」ではなく「2 1 0 done」を出力する理由を誰か説明できますか? 私が理解できるように、リスト内包表記中に作成されるいくつかの匿名変数があり、それらはリスト内包表記のカバー終了時に、フィロの原則を使用してガベージコレクションされます。しかし、それらはリスト aa で参照されていますね。その場合、2 番目の「del a」がdelマジック メソッドを呼び出さないのはなぜですか?
class A:
def __init__(self, name):
self.name = name
def __del__(self):
print self.name,
aa = [A(str(i)) for i in range(3)]
for a in aa:
del a
print 'done'
また、高度な質問。http://codepad.org/niaUzGEyをご覧ください なぜ 5 部、3 部あるのですか? これは1枚じゃないの?なぜ5つか3つ?わからない、それが質問する理由です;)お時間をいただきありがとうございます!