в дополнение к ответу DeepSpace, нет способа удалить node1
, за исключением того, что вы найдете все переменные, которые ссылаются на этот экземпляр, а затем удалите его, я придумал функцию, которую нужно использовать вместо del
для вашей цели :
import sys
def kill(name):
l = []
for k, v in sys.modules[__name__].__dict__.items():
if str(v) == str(name): # Finding all vars that refers to that instace
l.append(k)
for i in l: # Deleting them
del sys.modules[__name__].__dict__[i]
итак, если у вас есть этот класс
class Node:
def __init__(self, item):
self.item = item
node1 = Node(12)
cur = node1
если вы наберете:
kill(cur)
node1
и все остальные, ссылающиеся на этот экземпляр, будут удалены.
Тестирование:
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)
<ipython-input-119-3c1cfaee77de> in <module>()
----> 1 cur
NameError: name 'cur' is not defined
In [120]: node1
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-120-d9e9a8ca6efc> in <module>()
----> 1 node1
NameError: name 'node1' is not defined