python动态变化的超级

python动态变化的超级,python,Python,我有几个类,为了进行测试,我需要对这些类进行一些小的修改。最初,我只是在做了必要的修改之后,将一个测试类更改为它应该模拟的类 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

我有几个类,为了进行测试,我需要对这些类进行一些小的修改。最初,我只是在做了必要的修改之后,将一个测试类更改为它应该模拟的类

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_之间运行一些测试方法。因此,我不能在更改类之前运行特定于测试的过程,也不能在super的init之后运行。我的想法是动态继承测试并覆盖一些方法,以便在必要时添加测试代码

class Test(object):
    def __init__(self, classToMimic):
        self..__bases__ = classToMimic   

    def methodToOverwrite(self):
        doStuffForTest
这是一个好方法吗?如果是,我该如何做?或者有更好的解决方案吗


编辑:正如Marijn指出的那样,我的观点是完全错误的。我正在寻找的是基础,而不是超级。改变了上面的内容,我目不转睛地看着这个,发现了更多的信息

为什么不使用工厂创建子类:

def test(classToMimic):

    class Test(classToMimic):

        def methodToOverwrite(self):
            doStuffForTest

    return Test

为什么不使用工厂创建子类:

def test(classToMimic):

    class Test(classToMimic):

        def methodToOverwrite(self):
            doStuffForTest

    return Test

“这是一个好方法吗”。。。你所做的事使我害怕。所以不…到底是什么让你这么做的?我还是不确定我是否理解你做得足够好以至于害怕。如果您提供了一些简单的代码来实际运行以演示问题。。。FWIW,我怀疑最好的解决方案是使用某种模拟框架…而且,我完全不确定这与
super
…有什么关系
super()
是一个生成特殊对象的函数,它将与类继承结构一起工作,以查找该结构更高的属性,例如,当您已覆盖这些属性时。您试图做的是动态地设置类的基础。“这是一个好方法吗”。。。你所做的事使我害怕。所以不…到底是什么让你这么做的?我还是不确定我是否理解你做得足够好以至于害怕。如果您提供了一些简单的代码来实际运行以演示问题。。。FWIW,我怀疑最好的解决方案是使用某种模拟框架…而且,我完全不确定这与
super
…有什么关系
super()
是一个生成特殊对象的函数,它将与类继承结构一起工作,以查找该结构更高的属性,例如,当您已覆盖这些属性时。你要做的是动态地设置你的类的基础。谢谢Dan,我想这对我来说是很简单的。看起来比我复杂的路径更干净谢谢Dan我想这对我来说很简单。看起来比我曲折的道路更干净