1

我了解MRO是在类层次结构中找到属性的顺序。

如果我在 myInstance.foo 中使用属性 'foo',将使用在 MRO 中找到的第一个 foo。
并且查找通常会停止。

现在,假设 bar() 利用super().
由于super()返回 MRO 中的下一个基本实例,myInstance.bar() 将调用其层次结构链中的所有 bar()。

如果所有超类的 bar() 也调用 super().bar(),
则 bar() 将按照 MRO 指定的顺序被调用。

我是否正确理解它们?

4

1 回答 1

0

是的。(super比“返回 MRO 中的下一个基本实例”要复杂一些,但您了解返回对象的属性查找功能,这很重要。)

于 2013-07-13T02:19:19.550 回答