class ToBeDeleted:
def __init__(self, value):
self.value = val
# Whatever...
def __del__(self):
print self.value
l = [ToBeDeleted(i) for i in range(3)]
del l
此打印2, 1, 0
。在列表中調用'del'
現在,某處定義在規範中刪除的元素的順序,或者是其實現的具體情況? (或者我可能不瞭解底層機制)
輸出是否可以是
0, 1, 2
? 我意識到2, 1, 0
順序可能是爲了避免在刪除元素時重新分配內存,但仍然存在問題。而最後一個 -
del l
和del l[:]
聲明有什麼區別?
很懷疑到'__del __()調用的順序'的地方指定。甚至不要考慮嘗試編寫依賴於特定順序的代碼。 –
即使指定了順序,也可以在任意位置持有對列表元素的引用,所以調用__del__方法的順序與從列表中移除引用的順序不同。 – millimoose