Python类中的继承顺序

Python类中的继承顺序,python,python-2.7,class,inheritance,Python,Python 2.7,Class,Inheritance,我有一个从基类物理继承的类示例Sim: 想象一下这些类包含很多代码。 现在,我通过定义一个新类PhysicsMod并继承Physics对物理学进行了一些修改: 还有ExampleSim,我为其创建了一个新类ExampleSimMod,并从ExampleSim继承: 我的问题是ExampleSimMod继承自ExampleSim,而ExampleSim继承自物理学,我希望它继承自PhysicsMod。有办法做到这一点吗?也许是通过超级继承还是多重继承 class ExampleSimMod(Exa

我有一个从基类物理继承的类示例Sim:

想象一下这些类包含很多代码。 现在,我通过定义一个新类PhysicsMod并继承Physics对物理学进行了一些修改:

还有ExampleSim,我为其创建了一个新类ExampleSimMod,并从ExampleSim继承:

我的问题是ExampleSimMod继承自ExampleSim,而ExampleSim继承自物理学,我希望它继承自PhysicsMod。有办法做到这一点吗?也许是通过超级继承还是多重继承

class ExampleSimMod(ExampleSim, PhysicsMod):
    print 'modified example sim'

是的,您可以执行多重继承

class Physics(object):
    def physics_method(self):
        print 'physics'

class ExampleSim(Physics):
    def physics_method(self):
        print 'example sim'

class PhysicsMod(Physics):
    def physics_method(self):
        print 'physics mod'

class ExampleSimMod(PhysicsMod, ExampleSim):
    pass

e = ExampleSimMod()
e.physics_method()
// output will be:
// physics mod
请注意ExampleSimMod matters中的课程顺序。这是一个很好的例子

出于演示的原因,我修改了您的代码。希望我的回答能帮助你

可能重复的
class ExampleSimMod(ExampleSim):
    print 'modified example sim'
class ExampleSimMod(ExampleSim, PhysicsMod):
    print 'modified example sim'
class Physics(object):
    def physics_method(self):
        print 'physics'

class ExampleSim(Physics):
    def physics_method(self):
        print 'example sim'

class PhysicsMod(Physics):
    def physics_method(self):
        print 'physics mod'

class ExampleSimMod(PhysicsMod, ExampleSim):
    pass

e = ExampleSimMod()
e.physics_method()
// output will be:
// physics mod