我正在尋找一種腳本執行某些函數的方法,我不知道這些函數的名稱,並在另一個模塊(假定由另一個用戶提供)上定義,但是用我定義的模塊進行了裝飾。調用裝飾的外部函數
例如,外部腳本是:
from MyScript import preprocess, process, postprocess
@preprocess(foo, bar)
def external_provider_random_name():
return "foo"
@process(foobar)
def external_provider_random():
return "bar"
@postprocess(foo, bar)
def external_provider():
return "foobar"
我會在這在我的應用程序和執行功能(我不知道他們的名字),與使用什麼能力反過來又導入裝飾函數返回。
我想裝修的原因成爲燒瓶似乎暴露出類似的行爲: 用戶可以通過裝飾功能與[email protected](my/route)
定義新的路線。這個函數然後在路由上執行一個http調用時執行,並且應用程序可以使用函數返回的任何內容(一個json)將其返回給用戶。
然而,似乎行爲不符合裝飾者的實際定義,我看不出我是如何實現這樣的。我在這裏錯過了什麼,或者是否只有使用裝飾器的解決方案?
注意函數後面添加'函數=裝飾(功能)'就是相當於增加了'@ decorator'前它。 –
這就是我可以在函數調用中添加操作的方式。但是我仍然無法確定如何調用函數,因爲我無法訪問它的名字。 – AugBar
你不需要一個函數的名字來調用它。你只需要對函數的引用,這正是傳遞給你的裝飾器的東西。 – jasonharper