猿问

装饰器分配

假设装饰器


@app.callback(

    Output("plot_1", "figure"),

    [Input("checklist", "value"),

     Input("radio", "value")])

这在代码中重复了几次。副本之间的唯一区别是不同的绘图名称。


如何将该装饰器分配给另一个装饰器并使用后者?


@new_callback("plot_1")


侃侃无极
浏览 157回答 2
2回答

慕村9548890

装饰器语法只是函数应用的快捷方式; 只是一个函数。创建一个使用固定参数调用它的新函数。app.callbackdef new_callback(plot):    return app.callback(          Output(plot, "figure"),          [              Input("checklist", "value"),              Input("radio", "value")          ]    )app.callback本身实际上不是装饰者;它是一个返回装饰器的函数(即,将要修饰的函数作为参数的函数)。@app.callback(...)def foo():    ...等效于def foo():    ...foo = app.callback(...)(foo)

猛跑小猪

您可以将装饰器包装在其自己的装饰器中,并使用您在任何子函数中传递的参数,如下所示:def decorator_wrapper(arg1):    # do something with arg1:    print('Inside decorator_wrapper, arg1: ' + str(arg1))    def decorator(function):        print('Inside decorator, arg1: ' + str(arg1))        def wrapper(*args, **kwargs):            print('Inside wrapper, arg1: ' + str(arg1))            # execute decorated function:             result = function(*args, **kwargs)            return result        return wrapper    return decorator@decorator_wrapper('a')def MyFunction():    print('This is my function')MyFunction()这将导致:Inside decorator_wrapper, arg1: aInside decorator, arg1: aInside wrapper, arg1: aThis is my function更多这里: https://www.geeksforgeeks.org/decorators-with-parameters-in-python/
随时随地看视频慕课网APP

相关分类

Python
我要回答