zoukankan      html  css  js  c++  java
  • 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)

  • 相关阅读:
    ngnix 配置反向代理
    tomcat nio
    spring boot 1
    mongodb 总结
    spring profile 多环境配置管理
    分布式锁实现
    2020真难
    NSRunLoopCommonModes和NSDefaultRunLoopMode区别(Timer)
    数据统计---埋点
    【问题汇总】iOS数据持久化
  • 原文地址:https://www.cnblogs.com/sysnap/p/6600397.html
Copyright © 2011-2022 走看看