【Python基础编程211 ● 面向对象 ● __del__()方法】
---------Python基础编程---------
Author : AI菌
【内容讲解】
1.__del__()是一个魔法方法,del前有两个横线,后也有两个横线
2.这个方法,当对象被删除时,会自动被调用
【代码实现】
class Student: # 初始化方法,创建完对象后会自动被调用 def __init__(self, name): print('__init__方法被调用') self.name = name # 当对象被删除时,会自动被调用 def __del__(self): print("__del__方法被调用") print("%s 被干掉了..." % self.name) # 创建对象 s1 = Student("robot") # 删除对象,自动调用__del__()方法 print("%d 被删除1次" % id(s1)) del s1 print("--" * 10) # 当有变量保存了一个对象的引用时,此对象的引用计数就会加1; # 当使用del() 删除变量指向的对象时,则会减少对象的引用计数; # 如果对象的引用计数不为1,那么会让这个对象的引用计数减1; # 当对象的引用计数为0的时候,则对象才会被真正删除(内存被回收)。 s2 = Student("rabbit") # s2的引用计数为1 a1 = s2 # s2的引用计数为2 a2 = s2 # s2的引用计数为3 print("%d 被删除1次" % id(s2)) del s2 # s2的引用计数减1,为2 print("%d 被删除1次" % id(a1)) del a1 # s2的引用计数减1,为1 # 引用计数为0的时候,对象会被真正删除 # 此时调用__del__()方法 print("%d 被删除1次" % id(a2)) del a2 # s2的引用计数减1,为0
【运行结果】
__init__方法被调用 3158148617048 被删除1次 __del__方法被调用 robot 被干掉了... -------------------- __init__方法被调用 3158148618448 被删除1次 3158148618448 被删除1次 3158148618448 被删除1次 __del__方法被调用 rabbit 被干掉了...
【往期精彩】
▷【Python基础编程196 ● 读取文件的4种方式】
▷【Python基础编程197 ● 读取文件的4种方式】
▷【Python基础编程198 ● 读取文件的4种方式】
▷【Python基础编程199 ● Python怎么读/写很大的文件】
▷【Python基础编程200 ● 读取文件的4种方式】
▷【Python基础编程201 ● 读取文件的4种方式】
▷【Python基础编程202 ● 读取文件的4种方式】
▷【Python基础编程203 ● 读取文件的4种方式】
【加群交流】