2015-12-04 2 views
1

У меня есть класс, который ExampleSim inherets от базового класса Physics:порядка наследования в классах Python

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

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

Imagine этих классов, содержащих много кода. Теперь я сделал некоторые изменения в 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' 
+0

Возможный дубликат [Как работает супер() Python с множественным наследованием?] (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.

Я немного изменил ваш код для демонстрации. Надеюсь, мой ответ поможет вам!

Смежные вопросы