两种方法都可以正常工作。使用的方法
super()为子类带来更大的灵活性。
在直接呼叫方式中,
C.__init__可以同时呼叫
A.__init__和
B.__init__。
在使用时
super(),需要将类设计为协作多重继承where
C调用
super,这将调用
A的代码,该代码也将调用
super,从而调用
B的代码。请参阅http://rhettinger.wordpress.com/2011/05/26/super-
considered-super,以详细了解可以使用进行的操作
super。
[回答问题,稍后编辑]
因此,似乎除非我知道/控制我从(A和B)继承的类的初始化,否则我无法对我正在编写的类(C)做出安全的选择。
参考的文章显示了如何通过在
A和周围添加包装器类来处理这种情况
B。标题为“如何合并非合作类”的部分提供了一个可行的示例。
可能希望多重继承更容易,让您轻松组成Car和Airplane类来获得FlyingCar,但现实情况是,单独设计的组件通常需要适配器或包装器,然后才能像我们希望的那样无缝地组装在一起:-)
另一个想法:如果您对使用多重继承来编写功能不满意,则可以使用composition来完全控制在哪些情况下调用哪种方法。



