我有一个修饰器,它应该使用从命令行传入的参数

@deco(name)
def handle(self, *_args, **options):
    name = options["name"]
def deco(name):
    // The name should come from commandline
    pass
class Command(BaseCommand):
    def add_arguments(self, parser):
        parser.add_argument(
            "--name",
            type=str,
            required=True,
        )
    @deco(//How can I pass the name here?)
    def handle(self, *_args, **options):
        name = options["name"]

对此有何建议?

推荐答案

你可以做一个"元装饰者",类似于:

from functool import wraps

def metadeco(function):
    @wraps(function)
    def func(*args, **kwargs):
        name = kwargs['name']
        return deco(name)(function)(*args, **kwargs)
    return func

然后和那个元装饰师合作:

class Command(BaseCommand):
    def add_arguments(self, parser):
        parser.add_argument(
            "--name",
            type=str,
            required=True,
        )
    
    @metadeco
    def handle(self, *_args, **options):
        name = options['name']
        # …

Python相关问答推荐

幂集,其中每个元素可以是正或负""""

numpy.unique如何消除重复列?

如果包含特定值,则筛选Groupby

Js的查询结果可以在PC Chrome上显示,但不能在Android Chrome、OPERA和EDGE上显示,而两者都可以在Firefox上运行

如何写一个polars birame到DuckDB

如何在基于时间的数据帧中添加计算值

如何在不不断遇到ChromeDriver版本错误的情况下使用Selify?

为什么fizzbuzz在两个数字的条件出现在一个数字的条件之后时不起作用?

将多行数据循环到嵌套框架中的单行

简化通用属性的创建

将COLUMN BY GROUP中的值连接为列表,并将其赋值给PANAS数据框中的变量

Pandas:根据系列词典中的值筛选行

Pandas 修正滚动平均

Select 满足特定条件的连续元素作为单独的数组

Df.Drop_Duplates(),以极点表示?

新进程不会在运行FastApi的Docker中启动

Tkinter和动画.FuncAnimation累积延迟和冻结GUI

如何reshape 极地数据帧?

一种处理Django查询集数据的轻量级方法

特定 struct 中的最大元素