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)

  • 相关阅读:
    最短路问题之Dijkstra算法
    最短路问题之Bellman-ford算法
    最小生成树之Kruskal(克鲁斯卡尔)算法
    二分图问题
    七桥问题与欧拉道路
    拓扑排序
    八连通块
    四连通检测
    USACO19DEC题解
    1206 雅礼集训D2题解
  • 原文地址:https://www.cnblogs.com/sysnap/p/6600397.html
Copyright © 2011-2022 走看看