编辑/澄清使我的问题特定于我的查询:*我可以看到如何调用装饰器静态日志函数,但我没有看到如何调用_以及它的结果如何是日志的结果.我想看看进入/进入的东西是如何工作的*
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方法(并且它可以是任何名称).