zoukankan      html  css  js  c++  java
  • Python with

     1 class Query(object):
     2 
     3     def __init__(self, name):
     4         self.name = name
     5 
     6     def __enter__(self):
     7         print('Begin')
     8         return self    #若返回self改为‘a',最后print q 为’a'
     9 
    10     def __exit__(self, exc_type, exc_value, traceback):
    11         if exc_type:    #异常类型,异常值,异常跟踪信息 
    12             print('Error')   #  return False 抛出异常
    13         else:
    14             print('End')   # return Turn
    15 
    16     def query(self):
    17         print('Query info about %s...' % self.name)
    18 
    19 
    20 with Query('Bob') as q:
    21     q.query()

    with语句需要支持上下文管理协议的对象, 上下文管理协议包含__enter__和__exit__两个方法。with语句建立运行时上下文需要通过这两个方法执行进入和退出操作。

    先执行__enter__()方法,然后将返回值赋值给了q,再执行with下面的语句,最后执行__exit__()方法。

  • 相关阅读:
    LeetCode 21. 合并两个有序链表
    LeetCode 20. 有效的括号
    LeetCode 19. 删除链表的倒数第N个节点
    AI
    http
    IP地址
    wiodows /linux CMD
    git
    AI
    JS常用的获取值和设值的方法
  • 原文地址:https://www.cnblogs.com/qqzj/p/6673790.html
Copyright © 2011-2022 走看看