我有几个类,为了进行测试,我需要通过少量修改来复制这些类。最初,我只是将测试类更改为应该在进行必要的修改后模仿的类。
class Class_A(object):
def __init__(self):
do_class_A_stuff
class Class_B(object):
def __init__(self):
do_class_B_stuff
....
class Test(object):
def __init__(self, classToMimic):
doStuffForTest
self.__class__ = classToMimic
工作得很好。但是,现在我已经到了需要在do_classX_stuff之间运行一些测试方法的地步。因此,在更改类之前,我不能运行测试特定的过程,而是在超级的 init 之后。我的想法只是动态继承Test并覆盖一些方法,以便在必要时添加测试代码。
class Test(object):
def __init__(self, classToMimic):
self..__bases__ = classToMimic
def methodToOverwrite(self):
doStuffForTest
这是一个好方法,如果是这样,我该怎么做?还是有更好的解决方案?
编辑:我有这个错误,正如Marijn指出的那样,我正在寻找。基础,而不是超级。改变了上面这个,我发现了更多的信息。
答案 0 :(得分:4)
为什么不使用工厂来创建子类:
def test(classToMimic):
class Test(classToMimic):
def methodToOverwrite(self):
doStuffForTest
return Test