我面临的问题是:函数接收其对象的引用,并在例程执行过程中的某个时刻对这些引用调用del。
这些引用引用的对象有时在其他地方引用,而有时没有引用。
我希望del语句仅删除函数中存在的引用。如果该对象未在程序的其他地方引用,则可以对其进行垃圾回收。如果我是正确的,则del直接调用对象的析构函数,而不是简单地删除其引用。我如何获得所需的行为?
如果我是正确的,则del直接调用对象的析构函数,而不是简单地删除其引用。
假设使用CPython,这是不正确的。
del
将对象的引用计数减少1。当引用计数达到0时,将对对象进行垃圾回收。
如果通过析构函数表示__del__
魔术方法,请注意,通常在对象被垃圾回收时del
调用,而不是在调用时调用。而且,不能保证该方法甚至会被调用。
只是要注意,还有一个(可选)gc
接口可以中断对象引用周期。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句