1. 程式人生 > >python用類裝飾函數的一個有趣實現

python用類裝飾函數的一個有趣實現

log return some self. def int glog turn att

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

  

python用類裝飾函數的一個有趣實現