2015-12-04 92 views
1

我有一個類ExampleSim從基類Physics inherets:爲了繼承

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

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

想象含有大量的代碼這些類。 現在我已經通過定義一個新的類PhysicsModPhysics繼承做了一些修改,以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' 
+0

[Python的super()如何與多繼承協同工作?](http://stackoverflow.com/questions/3277367/how-does-pythons-super-work-with-multiple-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

由於演示原因,我修改了一下代碼。希望我的回答能幫助你!