当前位置:  开发笔记 > 编程语言 > 正文

Python类中的继承顺序

如何解决《Python类中的继承顺序》经验,为你挑选了1个好方法。

我有一个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'

bearzk.. 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

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

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



1> bearzk..:

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

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事项的上课顺序。这是一篇很棒的文章。

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

推荐阅读
黄晓敏3023
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有