簡體   English   中英

使單個裝飾器成為多個裝飾器

[英]Making a single decorator of out multiple

說,我有這樣的事情:

@decorator1
@decorator2
def myfunc()
   # ....

我如何聲明一個新的裝飾器both_decorators ,它將按順序調用decorator1decorator2 ,實際上使其成為它們的別名? 這樣我可以寫:

@both_decorators
def myfunc()
   # ....

這個想法是在許多情況下以相同的方式使用多個裝飾器時可以節省類型。

簡單:

def both_decorators(func):
    return decorator1(decorator2(func))

因為這實際上是所有裝飾者所做的。

是的你可以。 類似於以下內容:

def both_decorators(*decs):
    def decorator(dc):
        for dec in reversed(decs):
            dc = dec(dc)
        return dc
    return decorator

然后,您需要做的就是添加它們

@both_decorators(decorator1, decorator2)
def myfunc():
    #something happening here.

我個人比較喜歡這種方式,因為您可以選擇所需的裝飾器,而不需要。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM