Python模塊學習之特殊函數 __call__ 的使用
阿新 • • 發佈:2017-10-28
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 _callclass bss(object): @time_count() def runfunc(self): time.sleep(3) print ‘runfunc running‘ bs = bss() bs.runfunc()
Python模塊學習之特殊函數 __call__ 的使用