Python with

复制代码
 1 class Query(object):
 2 
 3     def __init__(self, name):
 4         self.name = name
 5 
 6     def __enter__(self):
 7         print('Begin')
 8         return self    #若返回self改为‘a',最后print q 为’a'
 9 
10     def __exit__(self, exc_type, exc_value, traceback):
11         if exc_type:    #异常类型,异常值,异常跟踪信息 
12             print('Error')   #  return False 抛出异常
13         else:
14             print('End')   # return Turn
15 
16     def query(self):
17         print('Query info about %s...' % self.name)
18 
19 
20 with Query('Bob') as q:
21     q.query()
复制代码

with语句需要支持上下文管理协议的对象, 上下文管理协议包含__enter__和__exit__两个方法。with语句建立运行时上下文需要通过这两个方法执行进入和退出操作。

先执行__enter__()方法,然后将返回值赋值给了q,再执行with下面的语句,最后执行__exit__()方法。

posted @   Mirgo  阅读(160)  评论(0编辑  收藏  举报
编辑推荐:
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 用 C# 插值字符串处理器写一个 sscanf
· Java 中堆内存和栈内存上的数据分布和特点
· 开发中对象命名的一点思考
· .NET Core内存结构体系(Windows环境)底层原理浅谈
阅读排行:
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· DeepSeek 解答了困扰我五年的技术问题。时代确实变了!
· 本地部署DeepSeek后,没有好看的交互界面怎么行!
· 趁着过年的时候手搓了一个低代码框架
· 推荐一个DeepSeek 大模型的免费 API 项目!兼容OpenAI接口!
点击右上角即可分享
微信分享提示