所以下面是一個非工作的例子,說明了什麼,我試圖讓在Python的裝飾與實例級別的信息
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'參數放在錯誤的地方。它是需要'self'參數的_inner_函數。 –