将装饰器应用于类中的每个方法?

将装饰器应用于类中的每个方法?,第1张

装饰器应用于类中的每个方法?

在Python 2.6中,类装饰器无疑是必经之路。例如,这是用于此类任务的非常通用的代码

import inspectdef decallmethods(decorator, prefix='test_'):  def dectheclass(cls):    for name, m in inspect.getmembers(cls, inspect.ismethod):      if name.startswith(prefix):        setattr(cls, name, decorator(m))    return cls  return dectheclass

而现在,

@decallmethods(login_testuser)class TestCase(object):    def setUp(self):        pass    def test_1(self):        print "test_1()"    def test_2(self):        print "test_2()"

会得到你想要的东西。在Python 2.5或更低版本中,

@decallmethods
语法不适用于类修饰,但是如果使用完全相同的代码,则可以在语句结束
后立即 将其替换为以下
class TestCase
语句:

TestCase = decallmethods(login_testuser)(TestCase)


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5642783.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存