【发布时间】:2017-07-26 12:34:11
【问题描述】:
所以下面是一个无效的例子,说明了我想要达到的目的
class TestClass(object):
def require_debug_mode(self, f):
def func_wrapper(*args, **kwargs):
if self.debug_mode:
return f(*args, **kwargs)
return func_wrapper
def __init__(self, debug_mode):
self.debug_mode = debug_mode
@require_debug_mode
def print_message(self, msg):
print msg
您可以重写所需的print_message,如下所示:
def print_message(self, msg):
if self.debug_mode:
print msg
我本质上希望能够装饰将执行某些检查的方法(不必在每个可能使用它的方法中重复该检查)。但是这些检查需要访问实例级别的信息。这可能吗?
【问题讨论】:
-
是的,这很容易实现。您刚刚将
self参数放在错误的位置。 inner 函数需要self参数。