我正在寻找一种方法,让脚本执行一些我不知道名称的函数,并在另一个模块上定义(假定由另一个用户提供),但用我定义的函数装饰。在
例如,外部脚本将是:
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"
反过来,我将在我的应用程序中导入它并执行函数(我不知道它们的名称),并能够使用修饰函数返回的内容。在
我之所以想到装潢师是成为烧瓶似乎暴露了类似的行为:
用户可以通过用$@app.route(my/route)
装饰函数来定义新路由。然后在路由上执行http调用时执行此函数,应用程序可以使用函数返回的任何内容(json)将其返回给用户。在
然而,行为似乎不符合装饰师的实际定义,我不知道如何才能做到这一点。我是在这里遗漏了什么,还是有一个只使用装饰器的解决方案?在
看起来你想创建某种函数注册表。下面是一个简单的示例实现,它使用字典跟踪已注册的函数。在
如果要注册已定义的函数,可以使用:
^{pr2}$您只需要从包装器中存储传入函数的副本。您可以将函数引用存储在全局名称中,
list
,dict
或您选择的任何其他方式。在{{{cd2>在这里存储了一个
完成所有初始化后,可以调用以下函数:
^{pr2}$相关问题 更多 >
编程相关推荐