- python中,当程序执行完毕之后,python的垃圾回收机制就会将所有对象回收,清除占用的内存
请看如下代码
1 class Parent(): 2 def __init__(self,name): 3 self.name=name 4 print('this is Parent_init') 5 6 def __del__(self): 7 print('回收父类对象...') 8 9 10 class Child(Parent): 11 def __init__(self,name,age): 12 super().__init__(name) 13 self.age=age 14 print('this is Child_init') 15 16 def __del__(self): 17 print('回收子类对象....') 18 19 #测试 20 ch=Child('Jane',23) 21 fc=Parent('Rounie') 22 #输出 23 this is Parent_init 24 this is Child_init 25 this is Parent_init 26 回收子类对象.... 27 回收父类对象...
解释:上面定义了两个类父类Parent和子类Child,子类继承父类。执行测试的两行代码,创建了两个对象,一个子类对象ch,一个父类对象fc。因为类中显式定义了类的内置函数__del__()函数,所以python垃圾回收机制会调用各自__del__()函数完成对对象的回收。当然,如果不显式定义__del__()函数,执行完程序后,系统会自动调用类的内置函数__del__()完成对对象的回收。
2、对象再引用的回收机制
通过类的内置__del__()来回收,不管内置__del__()有没有被显式实现
3、对象引用的回收机制
__del__()如果被显式实现,对象回收则通过显式__del__()来回收,如果没有被显式实现,则调用内置__del__()来回收