博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
环境管理器
阅读量:5169 次
发布时间:2019-06-13

本文共 1056 字,大约阅读时间需要 3 分钟。

环境管理器

  类内有__enter__ 和 __exit__实例方法的类被称为环境管理器
  能够用with进行管理的对象必须是环境管理器

说明:

  __enter__将在进入with语句时被调用并返回由as变量绑定的对象
  __exit__将在离开with语句时被调用,且可以用参数来判断在离开with语句时是否有异常发生并做出相应的处理

class A:    def __enter__(self):        print("此方法是在with语句内执行的")    def __exit__(self, exc_type, exc_val, exc_tb):        '''exc_type  用来绑定错误类型,当没有异常发生是绑定None          exc_val   用来绑定错误对象,当没有发生异常时绑定None           exc_tb    用来绑定traceback对象,当没有异常时绑定None        '''        if exc_type == None:            print("你已离开with语句,离开时没有任何异常")        else:            print("你已离开with语句,发生异常")            print("绑定错误对象是",exc_val)with A() as a:    print("这是with语句内部的输出")    print(int(input("请输入一个整数")))print("程序正常结束")输出结果:tarena@tedu:~/zengsf/828$ python3 exercise828.py 此方法是在with语句内执行的这是with语句内部的输出请输入一个整数f你已离开with语句,发生异常绑定错误对象是 invalid literal for int() with base 10: 'f'Traceback (most recent call last):  File "exercise828.py", line 20, in 
print(int(input("请输入一个整数")))ValueError: invalid literal for int() with base 10: 'f'

 

转载于:https://www.cnblogs.com/zengsf/p/9557382.html

你可能感兴趣的文章
Block的本质
查看>>
Pixel 3a 开箱及 Google Fi 服务评测视频
查看>>
用一个div模拟textarea的实现【前端每日一题-15】
查看>>
Python学习教程:爬虫分析了京东内衣销售记录,哪个size最多?
查看>>
有Excel、Tableau、PowerBI都能做数据分析,为什么还要用Python
查看>>
redis如何进行分库存储和选择模糊清除缓存
查看>>
spring security退出方法
查看>>
从获得字符串中获取数字
查看>>
传入一个月份获取该月的统计信息
查看>>
分组取出值最大的数据
查看>>
java判断为空的方法
查看>>
double类型的数值转为小数点2位
查看>>
java比较两个时间年月份的大小
查看>>
服务器上配置JDK
查看>>
java后台生成APP和H5所需要支付宝订单
查看>>
接口传递的json后台如何获得值
查看>>
分页工具的使用
查看>>
如何在Linux启动jar 包
查看>>
微信支付java后台
查看>>
小明买了一箱鸡蛋,假设有n个,可以一天吃1个,也可以一天吃2个,请问有多 少种方法可以吃完?...
查看>>