gpt4 book ai didi

python - Python类中的继承顺序

转载 作者:太空宇宙 更新时间:2023-11-04 08:04:23 24 4
gpt4 key购买 nike

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

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

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

想象一下这些包含大量代码的类。现在,我通过定义一个新类 PhysicsMod 并继承自 PhysicsPhysics 进行了一些修改:

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

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

关于python - Python类中的继承顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34086334/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com