python用类装饰函数的一个有趣实现

class RunningLog:
    def __init__(self,func):
        self._func=func
        self._func_name = func.__name__

    def __call__(self,func_name,level=None):
        self.level=level
        value=getattr(self, func_name.__str__())()
        self._func(func_name,self.level)
        return 'result: '+value

    def fun(self):
        print 'get value from class',self.level
        print 'do something'
        return 'test end'


@RunningLog
def bar(func_name,level=None):
    print 'has done ',func_name
    print 'level name===>',level


result=bar('fun',level='test')
print result

  

猜你喜欢

转载自www.cnblogs.com/slqt/p/10343032.html