以下是您的操作方式:
def log_real_decorator(f):
@wraps(f)
def wrapper(self, *args, **kw):
print "I am the decorator, I know that self is", self, "and I can do whatever I want with it!"
print "I also got other args:", args, kw
f(self, *args, **kw)
# ^ pass on self here
return wrapper
简单地传递
self
.
或
如果要创建既可用于类又可用于方法的通用装饰器,只需执行以下操作:
def log_real_decorator(f):
@wraps(f)
def wrapper(*args, **kw):
# Do something here
f(*args, **kw)
return wrapper
此外,当您需要将一些参数传递给decorator(如
@log_real_decorator(some_param=1)
. 在您的情况下,您不需要这样做,相反,您应该做的是创建一个具有两个嵌套函数的装饰器,就像我在上面所做的那样,并将其称为
@log_real_decorator
.