zoukankan      html  css  js  c++  java
  • 环境管理器

    环境管理器
      类内有__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 <module>
        print(int(input("请输入一个整数")))
    ValueError: invalid literal for int() with base 10: 'f'
  • 相关阅读:
    iOS 学习
    iOS 学习
    textField和textView限制输入条件
    FMDB的使用
    Xcode7以后 使用空模板
    MJPhotoBrowser BUG修复
    获得通讯录的访问权
    正则运算校验手机号码
    项目中生产模式和开发模式的切换
    自定义的进度条
  • 原文地址:https://www.cnblogs.com/zengsf/p/9557382.html
Copyright © 2011-2022 走看看