五.析构方法 __del__
五.析构方法 __del__
前面我们学了 __init__ 这个构造方法, 在实例对象的时候自动触发, 也叫初始化, 而析构方式是在执行 del对象的时候, 也就是在对象被清理之前自动触发 __del__ 的执行, 那么我们就可以在这方法里面进行一些操作
class Test:
def __del__(self):
print("删除对象, 触发了我")
T = Test()
del T # 删除对象, 触发了我
1.__del__的使用场景
- 一般用来进行回收系统资源的操作
- 如果一个对象仅仅占用应用程序(用户级)的资源时, 删除对象时, 垃圾回收机制会自动回收该对象所占用的应用程序资源, 即用户态内存
class A:
def __del__(self):
print("---触发del---")
a = A()
del a
print("---程序结尾---")
'''输出
---触发del---
---程序结尾---
'''
- 当一个程序运行完毕时, 也会自动触发GC, 进而GC触发
__del__
class A:
def __del__(self):
print("---触发del---")
a = A()
print("---程序结尾---")
'''输出
---程序结尾---
---触发del---
'''
- 当对象涉及到申请了操作系统的资源, 比如 open打开了文件, 或者与网络连接等, GC无法派上用场, 那么就需要我们重写一下
__del__的功能
🔰重写示例 : 对象中打开了一个文件
class Open:
def __init__(self):
self.f = open("test26.py","rt",encoding="utf-8") # 打开了一个文件
def __del__(self):
self.f.close() # 触发执行的时候, 关闭文件(系统资源的回收)
print("删除对象之前我关闭了文件,哈哈")
O = Open()
del O # 删除对象之前我关闭了文件,哈哈

浙公网安备 33010602011771号