我想要的是创建一个类decorator来装饰一个类,并在子类上工作。在
想象一下这个班级:
class CustomBaseTest(TransactionTestCase):
def __init__(self, *args, **kwargs):
...
def more_custom_helpers(self):
...
真正的考验是:
^{pr2}$我想要的是在CustomBaseTest
中使用一个decorator,它查找所有以“decorate\u this”开头的方法,并在之后和之前执行自定义代码。我已经有了装修师,像这样:
def class_decorator(klass):
is_method_test = lambda m: not m.startswith('_') and m.startswith('decorate_this_') and isinstance(getattr(klass, m), MethodType)
test_methods = filter(is_method_test, dir(klass))
for method_name in test_methods:
class_method = getattr(klass, method_name)
def helper(mname, method):
@wraps(method)
... some logic here
retval = method(*a, **kw)
... more logic here
return retval
return wrapper
fn = MethodType(helper(method_name, class_method), None, klass)
setattr(klass, method_name, fn)
return klass
你知道有没有可能做到这一点?怎么办?在
谢谢!!!在
感谢@Markku和@BrenBarn。在
这是解决办法。在
首先,我们有一个简单的装饰:
元类:
^{pr2}$这对我很有效!!如果我弄错了,我会提前道歉。在
相关问题 更多 >
编程相关推荐