zoukankan      html  css  js  c++  java
  • python

    class Fool:
    
        def __init__(self, name):
            self.name = name
    
        def __enter__(self):
            print('from enter')
            return self
    
        def __exit__(self, exc_type, exc_val, exc_tb):
            print('from exit')
            print(exc_type)
            print(exc_val)
            print(exc_tb)
            # return True
    
    
    with Fool('a.txt') as f:
        print('====>')
    print('sdf')
    
    # with Fool触发enter方法,将如return的值给f,操作结束后在执行exit方法,最后在打印sdf
    
    
    #**************************重点***********************************
    # 1. with obj ---> 触发obj.__enter__(),拿到返回值
    # 2. as f ---> f=返回值
    # 3. with obj as f  等同于 f = obj.__enter__()
    # 4. 执行代码块
    # 一:没有异常的情况下,整个代码块运行完毕后去触发__exit__,它的三个参数都为None
    # 二:有异常的情况下,从异常出现的位置直接触发__exit__
    #     a: 如果__exit__的返回值为True,代表吞掉了异常
    #     b: 如果__exit__的返回值不为True,代表吐出了异常
    #     c: exit的运行完毕就代表了整个with语句的执行完毕
    
    
    # 可以在__exit__中定制自动释放资源的机制,应用于管理资源如文件,网络连接和锁的编程环境中
    
  • 相关阅读:
    关于git远程被覆盖的问题
    java.lang.UnsupportedClassVersionError:JDK版本不一致报错
    Git学习-上传项目到github
    Servlet+jsp用户登录加上验证码
    Ajax校验--最近更新
    数据校验
    文件上传--多文件上传
    文件上传
    类型转换
    Struts 2 --ONGL介绍
  • 原文地址:https://www.cnblogs.com/863652104kai/p/11459032.html
Copyright © 2011-2022 走看看