1. 類內有 __enter__ 和 __exit__ 方法的類被稱爲環境管理器ide
2. 可以用with語句進行管理的對象必須是環境管理器對象
3. __enter__ 將在進入with語句時調用並返回由 as 變量管理的對象blog
4. __exit__ 將在離開with時被調用,且能夠用參數判斷離開with語句時是否有異常發生,並作出相應的處理it
class Door:class
def open_door(self):變量
print("正在開門")方法
def close_door(self):im
print("正在關門")異常
def come_in(self):img
print("正在進人")
def __enter__(self):
self.open_door()
return self #對象被as綁定(開門的動做被c綁定)
def __exit__(self, exc_type, exc_val, exc_tb):
self.close_door()
if exc_type is None:
print("with語句正常退出")
else:
print("with語句異常退出",exc_value)
with Door() as c:
c.come_in()
3 / 0 #拋出一個異常
c.come_in()
__enter__語句在with執行時調用 open_door 動做,在with執行完畢調用__exit__語句裏面的 close_door操做。判斷語句檢查類型並拋出狀態