1

这是我在 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()

我期待在一个班级中同时拥有鸡肉和兔子风格,但令我惊讶的是,它是小鸡跑,但基本跳跃。我开始阅读有关方法解析顺序的内容,现在我可以看到在多重继承中更改类的顺序会带来相反的效果。

问题是 - 我怎样才能在一个班级中同时拥有鸡肉和兔子风格?

更一般地说:当方法覆盖发挥作用时,如何正确继承具有共同基类的几个类?

4

1 回答 1

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

于 2012-09-06T09:47:50.670 回答