重ね合わせのpythonの構文デコレータは、参照デコレータあり

重畳デコレータ

定義:オブジェクトは、同じように飾られ、複数のデコレータを追加し、実行します。


デコレーター装飾オーバーレイ実行順序の順
装飾によってアップ:装飾オーダー。
実行順序:トップダウンで実行。

注:デコレータは、装飾品を呼び出すときに実行する機能を追加します。

デフWRAPPER1(FUNC):
     デフ inner1(* argsを、** kwargsから):
         印刷' 1 ' 
        RES = FUNC(* argsを、** kwargsから)
         印刷' 2 ' の戻りresが
     戻りますinner1
 DEF :wrapper2(FUNC)
     デフ inner2(* argsを、** kwargsから):
         印刷' 3 ' 
        RES = FUNC(* argsを、** kwargsから)
         印刷' 4 ' の戻りresが
     戻りますinner2
 DEF :wrapper3(FUNC)
     デフ inner3(* argsを、** kwargsから):
         印刷' 5 ' 
        RES = FUNC(* argsを、** kwargsから)
         印刷' 6 ' の戻りresが
     戻りますinner3を
@ WRAPPER1   inner1 = WRAPPER1(inner2) 
@ wrapper2    inner2 = wrapper2(inner3) 
@ wrapper3     inner3 = wrapper3(FOO)
DEF のfoo():
     印刷' FOOから' 
FOO()

 

第二には、参照デコレータがあります

DEF (ユーザー)warpper:
     DEF外(FUNC):  FUNC = fooの
        DEFインナー(* argsを、** kwargsから):
             IFユーザー== ' F ' 印刷' 購入(笑)のために利用できる'ユーザの追加 
                RES = FUNC (* argsを、** kwargsから)     FUNC()= FOO()
                の戻りRESは
             elifのユーザー== ' K ' 印刷' 申し訳ありませんneinei '#は、ユーザーを追加します
                RES = FUNC(* argsを、** kwargsから)        #1 FUNC()= FOO()
                の戻りresが
         返すインナー
     リターン外側を
@wrapper(" K "外warpper =(FOO)
DEFの fooが():  飾られたオブジェクトは、
    印刷' FOOから' 
FOO()

 

 

三、ラップ修復ツール

パケットのような非導電性DEF warpper(FUNC):      DEFインナー(* argsを、** kwargsから):          '' '          これはデコレータのノートです         :PARAM引数:         :PARAM kwargsから:         :リターン:         '' '          RES = FUNC(* argsを、** kwargsから)
#の         復帰RES      リターンインナー@wrapper DEFのfoo():      ' ''      このオブジェクトが装飾されているノート     :リターン:     '' ' 
#1      (「FOOから)印刷'はFoo() 印刷(FOO)#<warpper機能。<地元の人々について> .inner AT 0x0000000009E352F0>この場合は注意、デコレータ

リーダーパケットの後
から functools インポートラップ
 DEFのwarpper(FUNC):
    @wraps(FUNC)         変更ネームスペース--- foo>のFUNC 
    DEFインナー(* argsを、** kwargsから):
         '' '
        これはコメントですデコ​​レータ
        :のparam引数:
        :のparam kwargsから:
        :リターン:
        ''」
        RES = FUNC(* argsが、** kwargsから)
         戻り解像度は
     返すインナー
@wrapper
デフfoo():''」
    これは、注釈付きの装飾品であります
    :リターン:
    ''」
    プリント' FOOから' #1 のfoo()
プリント(FOO。__doc__

 

 

おすすめ

転載: www.cnblogs.com/Cheryl-D/p/11851689.html