- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
class First(object):
def __init__(self):
print("first")
class Second(First):
def __init__(self):
print("second")
class Third(First, Second):
def __init__(self):
print("third")
为什么 Python 不能创建一致的 MRO?在我看来这很清楚:
但是如果你尝试一下:
TypeError: Error when calling the metaclass bases
Cannot create a consistent method resolution
order (MRO) for bases First, Second
最佳答案
为了“一致”,MRO 应该满足这些约束:
您建议的层次结构没有任何可能的顺序满足这些限制。因为 Third 被定义为从 First before Second 继承,所以在 MRO 中 First 应该在 Second 之前。但是因为 Second 继承自 First,所以在 MRO 中 Second 应该在 First 之前。这种矛盾是无法调和的。
您可以阅读有关 Python 用于计算 MRO 的精确方法的更多信息,该方法称为 C3 linearization algorithm .
关于python - 为什么这是一个模棱两可的 MRO?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47808926/
我从一所大学获得了一些示例代码,导入了项目并尝试运行测试:方法 assertThat(Integer, Matcher) 对于 MyClass 类型是不明确的 每个 assertThat 都被标记为红
关于将 iOS 应用程序迁移到 Swift 3.0 的过程。这是我面临的一个问题。 先上相关代码: let calendar = NSCalendar.current, calendCompo = c
我刚开始研究 Java 8 Lambda 功能。我在 Java 7 中编写了这段代码,并尝试在 lamdas 中执行它。请注意,最后一行会产生编译错误,因为重载的函数不明确。我明白原因。如何使用 la
如何优先(告诉编译器)使用“函数接收引用”(#B)而不是“函数接收值”(#A)? #include using namespace std; class Heavy{/* ...... */}; /
我正在使用 Google Map API V3 显示车辆行驶路径及其路线方向。但是通过谷歌方向图标,很难找到方向。下图解释更多 我看到了每个图标,它是 source 我找到了图片路径,是 http:/
我是一名优秀的程序员,十分优秀!