我正在尝试这种方法来删除 python 中的对象。我阅读了 Python 的文档,指出垃圾收集器将自动删除未引用的对象。
def check():
class newOb():
def __init__(self,value):
self.value = value
print self.value
return None
class ob:
ins = {}
def cr(self,someuniqueid,value) :
newV = newOb(value)
ob.ins[someuniqueid] = newV ## saving this object refernce to the ob class ins dictionary
return newV
#### Accessing Object ###
someuniqueid = 12
c = ob()
d = c.cr(someuniqueid,123)
print d.value ## will print 123
# now deleting the associated object
del c.ins[someuniqueid]
check()
Run Code Online (Sandbox Code Playgroud)
在最后一步,我从内存中删除对象引用正在使用上述过程将从内存中删除对象
如果不是,那么代码有什么问题以及如何纠正它
我不知道你写的是什么意思:
\n\n\n如果不是,那么代码有什么问题以及如何纠正它
\n
当你使用del语句时,您删除了对对象的引用。它将耗尽内存,直到调用垃圾收集器。请记住,这可能是一个耗时的过程,如果该进程有足够的内存来继续执行,则没有必要。
一般来说,Python 不执行类似 C++ 的析构函数行为。
\n引用《Python 专家编程》:
\n\n\n这种内存管理器的方法大致基于一个简单的\n语句:如果不再引用给定的对象,则将其删除。\n换句话说,在解释器之后\n函数中的所有本地引用都将被删除:
\n\xe2\x80\xa2 离开函数
\n\xe2\x80\xa2 确保该对象不再被使用。
\n在正常情况下,收集器会很好地完成工作。但是 del 调用可用于帮助垃圾收集器\n手动删除对对象的引用。
\n
所以你不用手动管理内存。您可以帮助垃圾收集器,但最好将内存管理留在幕后。
\n