玩蛇网提供最新Python编程技术信息以及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

玩蛇网文章,转载请注明出处和文章网址:https://www.iplaypy.com/wenda/wd19272.html

相关文章 Recommend

玩蛇网Python互助QQ群,欢迎加入-->: 106381465 玩蛇网Python新手群
修订日期:2017年05月17日 - 17时19分52秒 发布自玩蛇网

您现在的位置: 玩蛇网首页 > Python问题解答 > 正文内容
我要分享到:

必知PYTHON教程 Must Know PYTHON Tutorials

必知PYTHON模块 Must Know PYTHON Modules