相关疑难解决方法(0)

这个python装饰器是如何工作的?

编辑/澄清使我的问题特定于我的查询:*我可以看到如何调用装饰器静态日志函数,但我没有看到如何调用_以及它的结果如何是日志的结果.我想看看进入/进入的东西是如何工作的*

class logger:
    @staticmethod
    def log(func):
        def ___(*args, **kwargs):
            try:
                print "Entering: [%s] with parameters %s" % (func.__name__, args)
                try:
                    return func(*args, **kwargs)
                except Exception, e:
                    print 'Exception in %s : %s' % (func.__name__, e)
            finally:
                print "Exiting: [%s]" % func.__name__
        return ___


class x:
      @logger.log
      def first_x_method(self):
          print 'doing first_x_method stuff...'

x().first_x_method()
Run Code Online (Sandbox Code Playgroud)

给出这个输出:

Entering: [first_x_method] with parameters (<__main__.x instance at 0x0000000001F45648>,)
doing first_x_method stuff...
Exiting: [first_x_method]
Run Code Online (Sandbox Code Playgroud)

我可以看到logger是一个带有静态方法的类,用于装饰(@logger.log)first_x_method.

但是我不明白为什么___调用sub方法(并且它可以是任何名称).

python decorator

2
推荐指数
1
解决办法
642
查看次数

标签 统计

decorator ×1

python ×1