#魔術方法(會話管理)
### `__enter__`魔術方法:
使用`with`語句的時候,會呼叫這個魔術方法,這個方法的返回值可以作為`as xx`的值。
示例:
```python
with FileOpener('xxx.txt','w') as fp:
pass
```
### `__exit__(self,exc_type,exc_val,exc_tb)`魔術方法:
1. 執行完這個`with`語句中的程式碼塊或者是這個程式碼塊中的程式碼發生了異常,就會執行這個方法。可以在這個方法中做一些清理工作。比如關閉檔案等。
2. 如果在`with`語句中發生了異常,那麼`exc_type`和`exc_val`將會儲存這個異常的資訊,如果沒有任何異常,那麼他們的值為`None`。
3. 如果在`with`語句中發生了異常,那麼會執行`__exit__`方法,但是如果你不想讓這個異常丟擲`with`程式碼塊,那麼你可以返回`True`,就不會把異常丟擲到外面了。
#encoding: utf-8
class FileOpener(object):
def __init__(self,filename,mode):
self.filename = filename
self.mode = mode
def __enter__(self):
self.fp = open(self.filename,self.mode)
print('__enter__')
return self.fp
def __exit__(self, exc_type, exc_val, exc_tb):
self.fp.close()
# print('__exit__')
print(exc_type)
print(exc_val)
print(exc_tb)
# 如果不想丟擲異常,那麼返回True,會自動的吸收這個異常
return True
with FileOpener('abc.txt','w') as fp:
fp.write('hello world')
a = 1
c = a/0
相關文章
- 魔術方法
- PHP 魔術方法PHP
- php 魔術方法 __callPHP
- 十六個魔術方法
- 會話管理會話
- 繼承關係和魔術方法繼承
- PHP 物件導向 (六)魔術方法PHP物件
- 類的一些常用魔術方法
- 會話技術之Cookie會話Cookie
- 會話技術之 Session會話Session
- 會話跟蹤技術會話
- 會話層技術-cookie會話Cookie
- 會話層技術-session會話Session
- php 修飾符和魔術方法 (基礎)PHP
- WebRTC 系列之音訊會話管理Web音訊會話
- Redux作者會是優秀的魔術師麼?Redux
- 對於魔術方法__call,__callStatic 新的認識
- 四種會話追蹤技術會話
- Java Web 會話技術總結JavaWeb會話
- 魔術方法(一) __getattribute__ VS __getattr__ VS __getitem___
- 類轉詞典 轉json 序列化 魔術方法JSON
- 次世代的會話管理專案 Spring Session會話SpringSession
- Laravel 第七章學習——會話管理Laravel會話
- 通過 Org 模式管理 Chromium 和 Firefox 會話模式Firefox會話
- screen 命令示例:管理多個終端會話會話
- PHP中什麼是魔術常量?有哪些魔術常量?(總結)PHP
- oracle 會話(session)被鎖瞭解決方法Oracle會話Session
- SAP Commerce Cloud UI 的使用者會話管理CloudUI會話
- 從零搭建一個IdentityServer——會話管理與登出IDEServer會話
- PHP 魔術常量簡要PHP
- day21-web開發會話技術03Web會話
- 盤點PHP最實用的5大魔術方法及其功能作用PHP
- 類的兩個裝飾器classmethod、staticethod和內建魔術方法SSM
- ABAP Webdynpro和WebClient UI不同的會話管理機制WebclientUI會話
- 利用斷開的域管理員RDP會話提權會話
- 技術管理進階——關於成長的話題
- web前端學習教程:Cookie會話跟蹤技術Web前端Cookie會話
- 魔板引擎中的replace方法