理解python中的mro和super()

时间:2013-07-13 02:16:44

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

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

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

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

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

我能正确理解它们吗?

1 个答案:

答案 0 :(得分:0)

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