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)

  • 相关阅读:
    linux线程
    linux线程
    c++之堆、栈、数据段、
    fork()、僵死进程和孤儿进程
    linux之管理mysql
    linux之管理apache
    Django 时间与时区设置问题
    Django rest framework:__str__ returned non-string (type NoneType) 真正原因
    Django获取当前页面的URL——小记
    Django中出现:TemplateDoesNotExist at
  • 原文地址:https://www.cnblogs.com/sysnap/p/6600397.html
Copyright © 2011-2022 走看看