#魔術方法(會話管理)
### `__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魔術方法PHP
- php 魔術方法 __callPHP
- PHP魔術方法和魔術常量介紹及使用PHP
- 會話管理會話
- Python 魔術方法指南Python
- Python很簡單?學會魔術方法才算入門!Python
- PHP中的魔術方法和魔術常量簡介和使用PHP
- Python 魔術方法 - Magic MethodPython
- python中的魔術方法__Python
- python魔術方法詳解Python
- PHP 物件導向 (六)魔術方法PHP物件
- 繼承關係和魔術方法繼承
- PHP之十六個魔術方法詳解PHP
- PHP 中 16 個魔術方法詳解PHP
- Python 中的魔術方法詳解Python
- php 物件導向中的魔術方法PHP物件
- Python中的魔術方法詳解Python
- php基礎知識(五)魔術方法PHP
- 類的一些常用魔術方法
- Session會話管理(PHP,Apacha)Session會話PHP
- 會話技術之 Session會話Session
- 會話技術之Cookie會話Cookie
- 會話跟蹤技術會話
- 會話層技術-cookie會話Cookie
- 會話層技術-session會話Session
- Redux作者會是優秀的魔術師麼?Redux
- php 修飾符和魔術方法 (基礎)PHP
- 說說 PHP 的魔術方法及其應用PHP
- WebRTC 系列之音訊會話管理Web音訊會話
- SQLServer會話數管理(轉貼)SQLServer會話
- 使用screen管理遠端會話會話
- 會話跟蹤技術Cookieless會話Cookie
- 3種 web 會話管理的方式Web會話
- Java Web 會話技術總結JavaWeb會話
- 四種會話追蹤技術會話
- 設定會話TRACE的方法(二)會話
- 設定會話TRACE的方法(一)會話