En plus de la réponse de DeepSpace, il n'y a aucun moyen de supprimer node1
sauf si vous trouvez toutes les variables qui se réfèrent à cette instance, puis les supprimez, j'ai créé une fonction à utiliser à la place de del
pour votre objectif :
import sys
def kill(name):
l = []
for k, v in sys.modules[__name__].__dict__.items():
if str(v) == str(name): # Trouver toutes les variables qui se réfèrent à cette instace
l.append(k)
for i in l: # Les supprimer
del sys.modules[__name__].__dict__[i]
donc, si vous avez cette classe
class Node:
def __init__(self, item):
self.item = item
node1 = Node(12)
cur = node1
si vous tapez :
kill(cur)
node1
et tous les autres qui se réfèrent à cette instance seront supprimés.
test :
In [116]: node1
Out[116]: <__main__.Node at 0x7f68eca386d8>
In [117]: cur
Out[117]: <__main__.Node at 0x7f68eca386d8>
In [118]: kill(cur)
In [119]: cur
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
in ()
----> 1 cur
NameError: name 'cur' is not defined
In [120]: node1
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
in ()
----> 1 node1
NameError: name 'node1' is not defined