Python文档称,如果对象的引用计数为零,则认为该对象已被删除。而del和__del__之间的区别在于:
然而,令我困扰的是:
顺便说一下,如果我对Python中删除对象的理解确实是发生的事情。是否有任何好的建议,如何删除附加到列表中的对象并释放内存空间?
- del将对象的引用计数减少1
- __del__在对象的引用计数为零时执行
然而,令我困扰的是:
如果我创建一个对象并将对象绑定到名称ObjectX。它会增加1个引用计数,对吧?
如果我创建一个名为ListY的列表,并将ObjectX附加到ListY中。这意味着引用计数将增加到2,对吧?
现在,如果我删除ObjectX和ListY,那么对象的引用计数仍然保持为1,对象仍然坐在硬盘上等待某些好心人来杀死它吗?
顺便说一下,如果我对Python中删除对象的理解确实是发生的事情。是否有任何好的建议,如何删除附加到列表中的对象并释放内存空间?
class Slave:
def __init__(self):
self.name=""
def __del__(self):
print("SLAVE DEAD")
def sequence():
SlaveX=Slave()
slaveList=list()
slaveList.append(SlaveX)
del SlaveX
print("I AM NOT DEAD YET")
del slaveList
__del__
方法,当引用计数归零时,它会自动被调用。如果你愿意,可以调用del
方法,但是只要退出分配 ObjectX 和 ListY 的方法即可将引用计数减少到零,所以通常不需要调用del
方法。 - user9423368