这是我在python代码中的示例模型
class BasicActivity:
def run(self):
print "basic run"
def jump(self):
print "basic jump"
class ChickenStyleActivity(BasicActivity):
def run(self):
print "run like chicken"
class BunnyStyleActivity(BasicActivity):
def jump(self):
print "jump like bunny"
class ExtraordinaryActivity(ChickenStyleActivity,BunnyStyleActivity):
pass
d = ExtraordinaryActivity()
d.run()
d.jump()
我期待在一个班级中同时拥有鸡肉和兔子风格,但令我惊讶的是,它是鸡肉运行但基本跳跃。 我开始阅读有关方法解析顺序的内容,现在我可以看到,在多重继承中更改类的顺序会带来相反的效果。
问题是 - 如何在一个班级中同时拥有Chicken和Bunny风格?
更一般地说:当方法重写发挥作用时,如何正确地继承几个具有公共基类的类?
答案 0 :(得分:4)
我认为你使用的是Python 2.x,而不是Python 3.x。
因此,BasicActivity需要继承object
:
class BasicActivity(object):
pass
Alex Martelli在此描述: Method Resolution Order (MRO) in new style Python classes
在Python 3中,所有类都继承自object