【问题标题】:understanding mro and super() in python理解python中的mro和super()
【发布时间】:2013-07-13 02:16:44
【问题描述】:

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

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

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

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

我理解正确吗?

【问题讨论】:

    标签: python multiple-inheritance super method-resolution-order


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-01
      相关资源
      最近更新 更多