1. 程式人生 > >Python模塊學習之特殊函數 __call__ 的使用

Python模塊學習之特殊函數 __call__ 的使用

class 調用 run func 運行時間 結果 bject ger time_c

博主在寫自動化的過程中想計算每一個用例的運行時間

因為使用的POM模型,每一個用例都是一個函數,所以實際需要得到的是函數運行的時間

在每一個函數運行開始的時候打一個標記,結束的時候打一個標記可以得到結果,但是比較麻煩,所以想到了裝飾器

在使用裝飾器的時候,遇到了各種問題,都已經一一解決,最終代碼如下:



#所有的函數都是可調用對象。
#使用__call__()函數可以將一個類實例也可以變成一個可調用對象

import
time from logging_save import logger class runtime_count(object): def __init__(self):
pass def __call__(self,func): def _call(*args, **kw): begintime = time.clock() func(*args, **kw) end_time = time.clock() runtime = end_time -begintime logger.info(ran %s cost %.3f s % (func.__name__, runtime)) return _call
class bss(object): @time_count() def runfunc(self): time.sleep(3) print runfunc running bs = bss() bs.runfunc()

Python模塊學習之特殊函數 __call__ 的使用