为了账号安全,请及时绑定邮箱和手机立即绑定

为什么下面的代码会报错——“错误:‘NoneType’对象不可调用”?

为什么下面的代码会报错——“错误:‘NoneType’对象不可调用”?

HUWWW 2023-06-06 17:17:11
我试图在 python 中实现装饰器,但在第 14 行出现错误,即 hello()    #The code-    def maint(item1):        def greet():            print("Good Morning")             item1()            print("Tanish")        return greet()    #decorator----    @maint     def hello():        print("Hello")    # hello=maint(hello)    hello()我究竟做错了什么?
查看完整描述

1 回答

?
偶然的你

TA贡献1841条经验 获得超3个赞

return greet()

在装饰器中,您调用greet()返回其结果。由于greet()没有显式返回,因此结果为None。这将有助于认识到装饰器是这样的简写语法:

def hello():   passhello = maint(hello)

注意 hello 是如何被重新分配给任何maint()返回值的。在您的情况下,hello被重新分配给None. 所以调用hello()会导致错误。

要解决此问题,只需return greet不带括号即可。装饰器总是返回一个函数。他们不应该调用该函数。


查看完整回答
反对 回复 2023-06-06
  • 1 回答
  • 0 关注
  • 82 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信