码迷,mamicode.com
首页 > 编程语言 > 详细

Python 对象上下文管理协议

时间:2020-12-04 11:46:56      阅读:14      评论:0      收藏:0      [点我收藏+]

标签:none   pre   enter   def   type   参数   col   close   ret   

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)

 

Python 对象上下文管理协议

标签:none   pre   enter   def   type   参数   col   close   ret   

原文地址:https://www.cnblogs.com/liangqingyun/p/14064037.html

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