我正在寻找一种脚本执行某些函数的方法,我不知道这些函数的名称,并在另一个模块(假定由另一个用户提供)上定义,但是用我定义的模块进行了装饰。调用装饰的外部函数
例如,外部脚本是:
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