【问题标题】:Multiple Inheritance in Python, same method in mature classesPython中的多重继承,成熟类中的相同方法
【发布时间】:2013-11-28 10:28:25
【问题描述】:

如果您从许多实现了相同方法的类继承,Python 会提供什么行为?

Class A():
    def method():
        pass

Class B():
    def method():
        pass

Class C(A,B):
    pass

【问题讨论】:

  • 您是否尝试过这样做?
  • 查找“方法解析顺序”(mro)的概念。
  • 这也取决于 Python 版本; Python 2 还是 3?如果是 Python 2,A() 是否继承自 object

标签: python class inheritance multiple-inheritance


【解决方案1】:

这个问题相当复杂...... Python 方法解析顺序至少有三种不同的算法。

对于简单的情况,它可以满足您的期望,对于细微的差异,请参阅

http://python-history.blogspot.it/2010/06/method-resolution-order.html

【讨论】:

  • 三个?我只数两个;旧样式和新样式。 Python 3 默认使用 new-style,在 Python 2 中你需要从 object 继承才能这样做。第三个是什么?
  • 来自 Guido 的博客文章:“Python 至少知道三种不同的 MRO 算法:经典、Python 2.2 新式和 Python 2.3 新式(又名 C3)”。
  • 啊,我一般忽略 2.2 new-style,因为那只是一个版本,被认为是一个错误。从 2.3 开始,只有 2 个变体,您通常可以假设没有人再使用 2.2。
猜你喜欢
  • 2014-12-03
  • 1970-01-01
  • 2011-10-09
  • 1970-01-01
  • 2011-08-13
  • 1970-01-01
  • 2017-02-13
  • 2014-03-06
  • 1970-01-01
相关资源
最近更新 更多