带有arg的装饰器,它返回与传递的[保留]相同的功能

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

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

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

@addarg(17)
def foo():
    pass

print(foo.x)    # should print 17
python python-decorators
1个回答
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)

这就是所有人!

© www.soinside.com 2019 - 2024. All rights reserved.