我有一个继承自基类 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关于这个。
出于演示原因,我对您的代码进行了一些修改。希望我的回答能帮到您!
