python帶引數的類裝飾器

2022-04-03 18:15:50 字數 804 閱讀 3346

#

-*- coding: utf-8 -*-

#author:baoshan

#帶引數的類裝飾器(和不帶引數的類裝飾器有很大的不同)

#類裝飾器的實現,必須實現__call__和__init__兩個內建函式。

#__init__:不再接收被裝飾函式,而是接收傳入引數;

#__call__:接收被裝飾函式,實現裝飾邏輯

class

logger(object):

def__init__(self, level='

info'):

self.level =level

def__call__

(self, func):

print("

: the function () is running...

".format(level=self.level, func=func.__name__

)) func(*args, **kwargs)

return

@logger(level="

warning")

defsay(something):

print("

say {}!

".format(something))

say(

"hello

")

執行結果:

[warning]: the function say() is

running...

say hello!

謝謝!

python帶引數的類裝飾器

摘自 coding utf 8 author baoshan 帶引數的類裝飾器 和不帶引數的類裝飾器有很大的不同 類裝飾器的實現,必須實現 call 和 init 兩個內建函式。init 不再接收被裝飾函式,而是接收傳入引數 call 接收被裝飾函式,實現裝飾邏輯 class logger obje...

python 帶引數裝飾器

在前面一文 python裡為什麼需要使用裝飾器 decorator 裡,我們學習了為什麼需要裝飾器,知道裝飾器就是為了不修改原來函式的 又達到增加功能的作用。其實為了裝飾器更通用化,那麼裝飾器是否也可以帶引數呢?其實是可以的,這樣更加通用化了,達到共享極點。在前面也學習 為什麼要使用閉包 closu...

python 實現帶引數的裝飾器

coding utf8 author bluesli defbefore request,kwarg print before defafter request,kwarg print after deffilter before fun,after fun defouter main fun de...