class Player:
def __enter__(self):
print('enter')
return self
def __exit__(self, exc_type, exc_val, exc_tb):
if exc_tb:
print("process exp")
else:
print("no exception")
print('exit')
return True
with Player() as player:
print('player with')
print(player)
注意以下几点
with语句执行时会自动调用类的
__enter__
方法。with语句player 为类中
__enter__
方法的返回值,这里为player
对象本身self
。with语句执行结束后会调用类的
__exit__
方法,可以用来释放资源。- 如果with语句中出异常,则执行
__exit__
。其中的三个参数会接收到异常信息。如果最终返回true,则意思为异常处理结束。返回false则继续抛出。