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

我试图在 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()

我究竟做错了什么?


HUWWW
浏览 113回答 1
1回答

偶然的你

return greet()在装饰器中,您调用greet()并返回其结果。由于greet()没有显式返回,因此结果为None。这将有助于认识到装饰器是这样的简写语法:def hello():   passhello = maint(hello)注意 hello 是如何被重新分配给任何maint()返回值的。在您的情况下,hello被重新分配给None. 所以调用hello()会导致错误。要解决此问题,只需return greet不带括号即可。装饰器总是返回一个函数。他们不应该调用该函数。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python