问题描述
我有一个类 ExampleSim
,它从基类 Physics
继承:
I have a class ExampleSim
which inherits from base class Physics
:
class Physics(object):
arg1 = 'arg1'
def physics_method:
print 'physics_method'
class ExampleSim(Physics):
print 'example physics sim'
想象一下这些包含大量代码的类.现在,我通过定义新类 PhysicsMod
并从 Physics
继承来对 Physics
进行了一些修改:
Imagine these classes containing lots of code.Now I have made some modifications to Physics
by defining a new class PhysicsMod
and inheriting from Physics
:
class PhysicsMod(Physics):
arg1 = 'modified arg1'
,但同时也是 ExampleSim
的示例,为此我创建了一个新类 ExampleSimMod
并从 ExampleSim
继承:
but also to ExampleSim
for which I created a new class ExampleSimMod
and inherited from ExampleSim
:
class ExampleSimMod(ExampleSim):
print 'modified example sim'
我的问题是, ExampleSimMod
是从 ExampleSim
继承的,而 ExampleSim
是从 Physics
继承的,而我希望它是从 PhysicsMod
.有没有办法做到这一点?可能是通过 super()
还是通过多重继承?
My issue is that ExampleSimMod
inherits from ExampleSim
which inherits from Physics
where i would like to have it inherit from PhysicsMod
instead. Is there a way to do this? perhaps through super()
or by multiple inheritance?
class ExampleSimMod(ExampleSim, PhysicsMod):
print 'modified example sim'
推荐答案
是的,您可以进行多重继承.
Yes, you can do multiple inheritance.
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
中类的顺序很重要.这是出色的文章.
please note the order of class in ExampleSimMod
matters. The's a great article about this.
出于演示原因,我对您的代码做了一些修改.希望我的回答能对您有所帮助!
I modified your code a bit for demonstration reason. Hope my answer can help you!
这篇关于Python类中的继承顺序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!