【问题标题】:order of inheritance in Python classesPython 类中的继承顺序
【发布时间】:2015-12-04 10:36:26
【问题描述】:

我有一个类ExampleSim,它继承自基类Physics

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

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

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

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'

【问题讨论】:

标签: python python-2.7 class inheritance


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-08-03
    • 2014-03-06
    • 2019-07-22
    • 2016-08-09
    • 2016-06-28
    • 2015-09-04
    相关资源
    最近更新 更多