首页 > 在Python类中如何定义和使用装饰器?

在Python类中如何定义和使用装饰器?

是这样的,我封装了一个类,然后许多类中的方法要加一些相同的功能(这些功能都是基于这个类的),我知道装饰器能简化这个过程,但google了许多,没有发现在类中如何实现装饰器.

比如:

class Test(object):
    self.i = 1
    def fun(self):
        print 'hehe'

我想要在一些方法前加入特定改变self.i的方法并把参数传进去,类似这样:


def decorator(self, args): def _deco(func): def __deco(): self.i = args func() return __deco return _deco @decorator(self, args) def fun(self): print 'hehe'

这样我就可以把self.i改成args了.但是在类中这种方法不管用~

所以问题来了:

  1. 类中可不可以使用并定义装饰器,如何使用?
  2. 如果不能使用可以用什么方法代替?

非常感谢


看着问题有点绕,肯定是能做到的。

我理解题主大概是想要这样的效果:

class Foo(object):
    @decorator(123)
    def bar(self):
        # 输出 123
        print('i:', self.i)

def decorator(args):
    def _deco(func):
        def _func(self):
            # 注意 self 是作为参数传进来的
            self.i = args
            func(self)
        return _func

    return _deco
【热门文章】
【热门文章】