为了账号安全,请及时绑定邮箱和手机立即绑定

类中的Python装饰器

类中的Python装饰器

子衿沉夜 2019-10-24 14:17:16
可以这样写吗: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()


查看完整回答
反对 回复 2019-10-24
  • 3 回答
  • 0 关注
  • 396 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信