Python:有哪些函数可以检查装饰器的参数?

问题描述 投票:0回答:1

我有一系列函数,它们使用装饰器来标记它们在管道中的函数“类别”(入口、进程、出口等)。例如:

@custom_task(task_type=TaskType.Ingress)
def my_task(<arg1>, <arg2>, ...):
    ...

下面是

custom_task
装饰器的简化版本:

def custom_task(task_type=TaskType.Unknown):
    def wrapper(func):
        def executor(*args, **kwargs):
            func.__task_type__ = task_type
            func(*args, **kwargs)
        return executor
    return wrapper

我知道必须首先运行代码才能创建/填充

__task_type__
属性。但是,有没有一种方法(使用检查或其他一些不起眼的库)来查看
task_type
函数的
custom_task
装饰器中
my_task
参数的 kwargs 默认值?跑步之前
my_task
?谢谢。

python python-decorators
1个回答
0
投票

只需将你的装饰器更改为:

def custom_task(task_type=TaskType.Unknown):
    def decorator(func):
        func.__task_type__ = task_type
        return func
    return decorator

然后你可以这样做:

@custom_task(task_type=TaskType.Ingress)
def my_task(<arg1>, <arg2>, ...):
    ...
print(my_task.__task_type__)
© www.soinside.com 2019 - 2024. All rights reserved.