簡體   English   中英

Python 類中的繼承順序

[英]order of inheritance in Python classes

我有一個從基類Physics繼承的ExampleSim類:

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

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

想象一下這些包含大量代碼的類。 現在我通過定義一個新類PhysicsMod並繼承自PhysicsPhysics進行了一些修改:

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'

是的,您可以進行多重繼承。

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的類順序ExampleSimMod重要。 這是一篇關於這個的很棒的文章

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM