Python的内存管理是依据对象引用次数管理的,对象被创建,分配内存给对象;对象引用计数为0,分配给对象的内存被回收。
下面这些情况对象的引用计数+1:
对象被创建:a = Create_Object()
引用被赋值:b = a
被作为参数传递给函数:f(a)
作为容器对象的一个元素:lst = [1,a]
下面这些情况对象的引用计数-1
离开作用域。比如f(a)函数结束时,a指向的对象引用减1。
引用被显式的销毁:del a
对象的一个别名被赋值给其他对象:b = 1
对象从一个容器对象中移除:lst.remove(a)
容器对象本身被销毁:del lst。
关于__del__魔法
from sys import getrefcount as count
class Test(object):
def