Skip to main content
 首页 » 编程设计

python之Python类中的继承顺序

2025年05月04日18unruledboy

我有一个继承自基类 Physics 的类 ExampleSim:

class Physics(object): 
    arg1 = 'arg1' 
    def physics_method: 
        print 'physics_method' 
 
class ExampleSim(Physics): 
    print 'example physics sim' 

想象一下这些包含大量代码的类。 现在,我通过定义一个新类 PhysicsMod 并继承自 Physics 对 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' 

请您参考如下方法:

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

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关于这个。

出于演示原因,我对您的代码进行了一些修改。希望我的回答能帮到您!