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則繼續拋出。