nlu*_*igi 1 python inheritance class python-2.7
我有一个ExampleSim从基类继承的类Physics:
class Physics(object):
arg1 = 'arg1'
def physics_method:
print 'physics_method'
class ExampleSim(Physics):
print 'example physics sim'
Run Code Online (Sandbox Code Playgroud)
想象一下这些包含大量代码的类。现在,我Physics通过定义一个新类PhysicsMod并继承自Physics:
class PhysicsMod(Physics):
arg1 = 'modified arg1'
Run Code Online (Sandbox Code Playgroud)
但ExampleSim我为此又创建了一个新类ExampleSimMod并继承自ExampleSim:
class ExampleSimMod(ExampleSim):
print 'modified example sim'
Run Code Online (Sandbox Code Playgroud)
我的问题是,ExampleSimMod继承ExampleSim从继承Physics在那里我想有它继承PhysicsMod来代替。有没有办法做到这一点?也许通过super()或通过多重继承?
class ExampleSimMod(ExampleSim, PhysicsMod):
print 'modified example sim'
Run Code Online (Sandbox Code Playgroud)
是的,您可以进行多重继承。
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
Run Code Online (Sandbox Code Playgroud)
请注意ExampleSimMod事项的上课顺序。这是一篇很棒的文章。
我出于示范原因对您的代码做了一些修改。希望我的回答能对您有所帮助!