在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)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)