1 __del__(self)
1.1 单个对象的引用计数
当对象的引用计数为0时,可以进行垃圾回收,才会调用__del__方法。python和C++不一样的地方是变量是对内存中对象实例的引用。
- 例1:o1和o2都引用了同一个对象,del o1后引用计数为1,__del__不被执行,del o2后引用计数为0,__del__被执行。
- 例2:foo函数在返回时并没有调用Object::__del__,说明返回的对象和foo内部创建的Object对象是引用了一份内存,从而避免了复制。当脚本结束时,Object::__del__才被调用。
class Object():
def __init__(self):
print('Object::__init__')
def __del__(self):
print('Object::__del__')
def foo():
print('call foo()')
o = Object()
print('return foo()')
return o
if __name__ == '__ma