类中的Python装饰器

可以这样写吗:


class Test(object):

    def _decorator(self, foo):

        foo()


    @self._decorator

    def bar(self):

        pass

这将失败:@self中的self未知


我也尝试过:


@Test._decorator(self)

也会失败:测试未知


我想在装饰器中临时更改一些实例变量,然后运行装饰的方法,然后再将其更改回。




偶然的你
浏览 261回答 3
3回答

慕莱坞森

import functoolsclass 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()
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java