原文: https://106.13.73.98/__/187/
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
"""class A:
def