__del__,析构函数不能手动调用,而是每个对象引用使用完之后系统自动回收垃圾,且按照字典顺序(A-Za-z)来回收。
class NewClass(object):
num_count = 0 # 所有的实例都共享此变量,即不单独为每个实例分配
def __init__(self,name):
self.name = name
NewClass.num_count += 1
def __del__(self):
NewClass.num_count -= 1
print ("Del",self.name)ewClass("Hello")
bb = aa
cc = aa
del bb,cc,aa
print ("Over")
这个例子手动删除掉全部的应用所以会先执行__del__
再输出Over:
Del Hello
Over
这里例子中只手动删除一部分引用,则程序运行最后才会执行__del__
,也就是先输出Over再执行__del__
class NewClass(object):
num_count = 0 # 所有的实例都共享此变量,即不单独为每个实例分配
def __init__(self,name):
self.name = name
NewClass.num_count += 1
def __del__(self):
NewClass.num_count -= 1
print ("Del",self.name)
def test():
print ("aa")
aa = NewClass("Hello")
bb = aa
cc = aa
del bb,cc
print ("Over")
输出结果:
Over
Del Hello