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'
  • 相关阅读:
    小程序中点击input控件键盘弹出时placeholder文字上移
    微服务学习记录-consul服务发现
    微服务学习记录-ocelot网关
    一些新了解到技术
    warning: rpmts_HdrFromFdno: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY
    linux 7 创建DNS服务器
    ESXi 主机创建datastore失败
    检查MD5
    为戴尔服务器下载ESXi
    vCenter Server上的报警消除
  • 原文地址:https://www.cnblogs.com/zengsf/p/9557382.html
Copyright © 2011-2022 走看看