我想删除所有引用一个内存位置的对象。如果我不知道他们的全名,该怎么办?如何删除在Python中引用对象的内存位置?
class Foo(object):
pass
class Bar(object):
pass
a = Foo()
b = a
c = Bar()
c.a_ref = a
c.b_ref = b
for item in a, b, c.a_ref, c.b_ref:
print(id(item))
""" Out:
140035270075472
140035270075472
140035270075472
140035270075472
"""
UPD:
确定。我想删除link
或port1.link
,不用担心所有连接到它的其他端口(port2.link
),它们也不得不消失。
class LINK(object):
pass
class PORT(object):
def __init__(self, link=None):
self.link = link
def __repr__(self):
return str(id(self.link))
link = LINK()
port1 = PORT()
port2 = PORT()
port1.link = port2.link = link
print(id(link), port1, port2)
# (140586778512720, 140586778512720, 140586778512720)
del link
print(port1, port2)
# (140586778512720, 140586778512720)
# want: (None, None) ???
为什么?你真正的问题是什么? – 2015-03-25 07:35:52
我是一个小更新的例子,也许它可以做不同,但我认为删除内存位置的想法是逻辑 – uralbash 2015-03-25 08:10:55
如果我的答案有帮助,不要忘记接受它。谢谢! – 2015-03-26 13:42:47