![Python 对象上下文管理协议
[编程语言教程]](https://www.zixueka.com/wp-content/uploads/2024/01/1706709700-a7e6ec7cdf096f3.jpg)
class MyOpen:
def __init__(self,filename):
self.filename=filename
def __enter__(self):
self.file = open(self.filename, ‘r‘)
data = self.file.read()
print(data)
"""
如果 with代码块里面的程序没有异常,则执行with代码块里面的程序后,触发__exit__, 它后面的三个参数都为None;
如果 with代码块里面的程序发生异常, 则在发生异常的位置 触发触发__exit__,它后面的三个参数都不为None,分别代表着三个异常信息
如果返回True,则代表吞掉异常,with代码块外面的程序继续执行
如果返回False,或不返回任何信息,则抛出异常
"""
def __exit__(self, exc_type, exc_val, exc_tb):
self.file.close()
print(‘__exit__‘)
return True
with MyOpen(‘config.txt‘) as f:
print(6/0)
print(666)
hmoban主题是根据ripro二开的主题,极致后台体验,无插件,集成会员系统
自学咖网 »
Python 对象上下文管理协议