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
Imprime 2, 1, 0
.Appel de 'del' sur une liste
Maintenant, est l'ordre des éléments supprimés défini quelque part dans la spécification ou est-il spécifique à la mise en œuvre? (ou peut-être que je ne comprends pas les mécanismes sous-jacents)
la sortie pourrait, par exemple, être
0, 1, 2
? Je réalise que l'ordre2, 1, 0
est probablement fait pour éviter les réaffectations de mémoire pour les éléments lors de leur suppression, mais la question demeure.Et le dernier - quelle est la différence entre les instructions
del l
etdel l[:]
?
doute fort que l'ordre des appels à __ 'de __del()' est spécifié nulle part. Ne pensez même pas à essayer d'écrire du code qui repose sur un ordre particulier. –
Même si la commande a été spécifiée, vous pouvez conserver des références aux éléments de liste n'importe où, donc l'ordre dans lequel vos méthodes '__del__' sont appelées sera différent de l'ordre dans lequel les références sont supprimées de la liste. – millimoose