可以这样写吗:class Test(object): def _decorator(self, foo): foo() @self._decorator def bar(self): pass这将失败:@self中的self未知我也尝试过:@Test._decorator(self)也会失败:测试未知我想在装饰器中临时更改一些实例变量,然后运行装饰的方法,然后再将其更改回。
3 回答
ibeautiful
TA贡献1993条经验 获得超5个赞
import functools
class Example:
def wrapper(func):
@functools.wraps(func)
def wrap(self, *args, **kwargs):
print("inside wrap")
return func(self, *args, **kwargs)
return wrap
@wrapper
def method(self):
print("METHOD")
wrapper = staticmethod(wrapper)
e = Example()
e.method()
添加回答
举报
0/150
提交
取消