1 2 3 4

类中的上下文管理

当执行with 语句时,会先执行enter ,

当代码执行完毕后执行exit,或者代码遇到了异常会立即执行exit,并传入错误信息

包含错误的类型.错误的信息.错误的追踪信息  
注意:
    enter 函数应该返回对象自己 
    exit函数 可以有返回值,是一个bool类型,用于表示异常是否被处理,仅在上下文中出现异常有用
    如果为True 则意味着,异常以及被处理了 
    False,异常未被处理,程序将中断报错

class MyOpen(object):


    def __init__(self,path):
        self.path = path

    def __enter__(self):
        self.file = open(self.path)
        print("enter.....")
        return self

    def __exit__(self, exc_type, exc_val, exc_tb):
        print("exit...")
        # print(exc_type,exc_val,exc_tb)
        self.file.close()
        return True


with MyOpen("a.txt") as m:
    print(m) # enter.....  <__main__.MyOpen object at 0x0000015CD88B84E0> exit...

  

posted @ 2020-04-14 15:19  犹豫就会拜佛  阅读(163)  评论(0编辑  收藏  举报