Python类中的继承顺序

nlu*_*igi 1 python inheritance class python-2.7

我有一个ExampleSim从基类继承的类Physics

class Physics(object):
    arg1 = 'arg1'
    def physics_method:
        print 'physics_method'

class ExampleSim(Physics):
    print 'example physics sim'
Run Code Online (Sandbox Code Playgroud)

想象一下这些包含大量代码的类。现在,我Physics通过定义一个新类PhysicsMod并继承自Physics

class PhysicsMod(Physics):
    arg1 = 'modified arg1'
Run Code Online (Sandbox Code Playgroud)

ExampleSim我为此又创建了一个新类ExampleSimMod并继承自ExampleSim

class ExampleSimMod(ExampleSim):
    print 'modified example sim'
Run Code Online (Sandbox Code Playgroud)

我的问题是,ExampleSimMod继承ExampleSim从继承Physics在那里我想有它继承PhysicsMod来代替。有没有办法做到这一点?也许通过super()或通过多重继承?

class ExampleSimMod(ExampleSim, PhysicsMod):
    print 'modified example sim'
Run Code Online (Sandbox Code Playgroud)

bea*_*rzk 6

是的,您可以进行多重继承。

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
Run Code Online (Sandbox Code Playgroud)

请注意ExampleSimMod事项的上课顺序。这是一篇很棒的文章

我出于示范原因对您的代码做了一些修改。希望我的回答能对您有所帮助!