带arg的装饰器,返回与传递的函数相同的函数

时间:2019-10-19 23:21:44

标签: python python-decorators

我想要一个将is参数作为属性添加到基础函数的装饰器,然后返回该函数本身。当我查看模块时,功能foo已删除。它甚至没有显示出来。

def addarg(x):
    def decorator(func):
        func.x = x
        return func

@addarg(17)
def foo():
    pass

print(foo.x)    # should print 17

1 个答案:

答案 0 :(得分:1)

基于@Karl的注释,您的代码需要添加一行-

def addarg(x):
    def decorator(func):
        func.x = x
        return func
    return decorator # <-- Add this line

@addarg(17)
def foo():
    pass

print(foo.x)

这就是所有人!