“ NoneType”对象不可调用。为什么? (蟒蛇)

时间:2019-06-16 11:21:02

标签: python python-3.x

我想在装饰器的帮助下打印出一些内容,但是会出现无类型错误


def deco(func):
    def wrapper():
        return "<it>{}</it>".format(func)

@deco
def funct():
    return 'some'

funct()

TypeError: 'NoneType' object is not callable


2 个答案:

答案 0 :(得分:1)

这里

def deco(func):
    def wrapper():
        return "<it>{}</it>".format(func())
    return wrapper

@deco
def funct():
    return 'some'

print(funct()) 

输出

<it>some</it>

答案 1 :(得分:1)

由于从未调用过wrapper(),因此deco返回了None。然后,您尝试调用此返回值,从而导致错误。

要修复此问题,只需将包装返回到装饰器中即可

return wrapper