python 类装饰器


1 装饰器无参数

class tracer: 

    def __init__(self,func): 

        self.calls = 0 

        self.func = func 

    def __call__(self,*args): 

        self.calls += 1 

        print('call %s to %s' %(self.calls, self.func.__name__)) 

        self.func(*args) 

 

@tracer

def spam(a, b, c): 

    print(a + b + c) 

 

 

spam(1,2,3)

 

2 装饰器带参数

class tracer:  

    def __init__(self, *args):  

        self.calls = 0

        self.args = args

     

    def __call__(self, func):

        self.func = func

        def realfunc(*args):

              self.calls += 1

              print('call %s to %s' %(self.calls, self.func.__name__))

              self.func(*args)

        return realfunc

 

@tracer("xxxx")

def spam(a, b, c):  

    print(a + b + c)  

 

spam(1,2,3)

 

spam(1,2,3)

class tracer:      def __init__(self,func):          self.calls = 0          self.func = func      def __call__(self,*args):          self.calls += 1          print('call %s to %s' %(self.calls, self.func.__name__))          self.func(*args)   @tracerdef spam(a, b, c):      print(a + b + c)  
spam(1,2,3)spam(1,2,3)

 

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM