簡體   English   中英

這個裝飾器如何在python中工作

[英]How does this decorator work in python

我有這個裝飾由別人寫的代碼,我無法得到它

def mydecorator(a, b):
        def f1(func):
            def new_func(obj):
                try:
                    f= func(obj) 
                except Exception as e:
                    pass
                else:
                    if f is None:
                        pass
                    else:
                        f = f, a, b

                return f
            return new_func
        return f1

這適用於這樣的功能

@mydecorator('test1', 'test2')
def getdata():
   pass

我的想法是裝飾器將函數名稱作為參數但在這里

我無法從func來自哪里, obj來了

這個 -

@mydecorator('test1', 'test2')
def getdata():
   pass

類似於(沒有創建decofunc名稱) -

decofunc = mydecorator('test1', 'test2')
@decofunc
def getdata():
   pass

因為mydecorator()返回f1 ,它接受函數作為參數。

然后它獲取getdata函數作為參數。 並返回new_func ,名稱getdata替換為此new_func ,因此無論何時調用getdata()它都會調用new_func函數,該函數在內部調用原始的getdata()函數。

暫無
暫無

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

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