关于Python中装饰器的错误

时间:2018-04-28 10:01:43

标签: python decorator

代码如下:

import time
import sys

def LogClassFuncInfos(func):
    def wrapper(*s, **gs):
        methodName = format(func.__name__)
        print(methodName)
        func(*s, **gs)
    return wrapper

class NameModel():

    def __init__(self):
        self.name = 'test'

    @LogClassFuncInfos
    def getName(self):
        return self.name

a = NameModel()
print(a.getName())

代码应打印'test',但代码会打印None

如果删除@LogClassFuncInfos之前的def getName(self),则可以正常打印'test'

1 个答案:

答案 0 :(得分:4)

您忘记了return func(*s, **gs) wrapper的结果。