据推测,Matz 说“mixin 几乎可以完成多重继承所做的所有事情,而没有相关的缺点”(Matz 的话)。
首先,为什么 Ruby 模块包含不是“多重继承”?在我看来,模块和类之间几乎没有区别。当模块用作超类时,您无法实例化模块这一事实无关紧要。
我也知道连续的模块包含形成了一个从类向上延伸的单一继承链(不是树)。但是,对我来说,这不足以将它与“多重继承”区分开来,因为 Python 多重继承系统也“线性化”了超类链(使用C3 算法),只是 Ruby 的“线性化”过程要简单得多。
那么,在像 Python 这样的语言中,Ruby 模块混合与多重继承到底有什么区别呢?为什么 Python 采用 c3 MRO 算法背后的论点不适用于 Ruby?如果它们确实适用 - 为什么 Ruby 决定不采用这种算法?
谢谢