码迷,mamicode.com
首页 > 其他好文 > 详细

with&as上下文管理协议

时间:2018-10-20 22:45:49      阅读:206      评论:0      收藏:0      [点我收藏+]

标签:self   运行   class   val   代码块   def   __init__   pytho   执行   

通过with 方式调用的方式

class Open:
    def __init__(self,name):
        self.name = name

    def __enter__(self): #with调用的时候调用此功能
        print(‘enter‘)
        return self

    def __exit__(self, exc_type, exc_val, exc_tb): #with调用执行完之后执行此功能, exc_type异常类, exc_val异常值,exc_tb异常追踪信息
        print(‘exit‘)

with Open(‘a,txt‘) as f:
    print(‘print‘)
    print(‘f.name is :‘,f.name)
‘‘‘
enter
print
f.name is : a,txt
exit
‘‘‘

没有异常的情况下,整个代码块运行完毕后去触发__exit__,它的三个参数都为None
有异常的情况下,从异常出现的位置直接触发__exit__

  1. 如果__exit__的返回值为True,代表吞掉了异常
  2. 如果__exit__的返回值不为True,代表吐出了异常
  3. exit的运行完毕就代表整个with语句的执行完毕

with&as上下文管理协议

标签:self   运行   class   val   代码块   def   __init__   pytho   执行   

原文地址:https://www.cnblogs.com/chrrydot/p/9823263.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!