在装饰器中使用位置参数时发生TypeError

时间:2019-03-07 06:32:11

标签: python-decorators

执行简单的装饰器代码时出现以下错误

“ decorator_func()缺少1个必需的位置参数:'original_func'”

感谢有人指出问题,谢谢。

代码如下:

def decorator_func(original_func):
    def wrapper_func(*args, **kwargs):
       return original_func(*args, **kwargs)

    return wrapper_func()

@decorator_func() #also tried without calling i.e. @decorater_func
def displayInfo_func(name, age):
        print('Display Info func ran with arguments ({}, {})'.format(name))

displayInfo_func

谢谢。

1 个答案:

答案 0 :(得分:1)

问题在于返回包装函数时,您正在调用它,而且也没有任何参数。

def decorator_func(original_func):
    def wrapper_func(*args, **kwargs):
       return original_func(*args, **kwargs)

    return wrapper_func #instead of wrapper_func()

@decorator_func() #also tried without calling i.e. @decorater_func
def displayInfo_func(name, age):
    print('Display Info func ran with arguments ({}, {})'.format(name))