原文: http://blog.gqylpy.com/gqy/388
class A:
def __enter__(self):
"""
该方法在with后面的语句被求值后执行
:return: 该方法的返回值将赋值给as后面的变量,也就是下面的a
"""
print('__enter__')
return self
def __exit__(self, exc_type, exc_val, exc_tb):
"""
这里的__exit__方法只在两种情况下执行:
1.with后面的语句执行完毕后执行
2.with代码块内的语句触发异常时执行
:param exc_type: 异常类型
:param exc_val: 异常信息
:param exc_tb: 回溯对象(一个内存地址)
"""
print('__exit__')
def do_something(self):
print('do_something')
with A() as a:
a.do_something()
print('over')
"""
打印顺序:
__enter__
do_something
__exit__
over
"""