Python类中的继承顺序

时间:2015-12-04 10:36:26

标签: python python-2.7 class inheritance

我有一个类ExampleSim,它来自基类Physics

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

class ExampleSim(Physics):
    print 'example physics sim'

想象一下这些类包含大量代码。 现在我通过定义新的类Physics并继承自PhysicsModPhysics进行了一些修改:

class PhysicsMod(Physics):
    arg1 = 'modified arg1'

还有ExampleSim我为其创建了一个新课程ExampleSimMod并继承自ExampleSim

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

我的问题是,ExampleSimMod继承自ExampleSim继承自Physics,我希望其继承自PhysicsMod。有没有办法做到这一点?可能通过super()或多重继承?

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

1 个答案:

答案 0 :(得分:4)

是的,你可以做多重继承。

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事项中的课程顺序。这是一个great article

出于演示原因,我修改了一些代码。希望我的回答可以帮到你!