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)

  • 相关阅读:
    Hadoop安装配置(ubuntu-12.04.2-server-amd64)
    初识hadoop
    mybatis多表关联配置
    mybatis的详解
    SpringMVC学习笔记
    spring注解
    web filter用spring注入对象
    luence全文检索(数据库检索)
    C++ inline 函数
    Ubuntu16.04 QT5编译出现cannot find -lGL和collect2:error:ld r
  • 原文地址:https://www.cnblogs.com/sysnap/p/6600397.html
Copyright © 2011-2022 走看看