python裝飾器在類中的實現


class Test():
    xx = False

    def __init__(self):
        pass

    def test(func):
        def wrapper(self, *args, **kwargs):
            print(self.xx)
            return func(self, *args, **kwargs)
            
        return wrapper

    @test
    def test_a(self,a,b):
        print(f'ok,{a} {b}')

if __name__=='__main__':
    t=Test()
    t.test_a('a','ab')

 新寫的例子,封裝了一個調用API,需要保存用戶調用的一些信息

def log(func):
    @functools.wraps(func)
    def wrapper(self, *args, **kwargs):
        start = time.time()
        result, success, err = None, None, None
        try:
            result = func(self, *args, **kwargs)
            success = True
        except Exception as e:
            err = e
        end = time.time()
        log_dict = {'tableName': args[0],
                    'operation': func.__name__,
                    'startTime': time.strftime(time_format, time.localtime(start)),
                    'endTime': time.strftime(time_format, time.localtime(end)),
                    'elapsedTime': int(end - start),
                    'success': success,
                    'errMsg': err,
                    'account': self.account}
        print(json.dumps(log_dict))
        return result

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM