超级()终止线

时间:2015-04-12 09:27:31

标签: python

我刚刚看过Raymond Hettinger的Super considered super演讲。在其中,他描述了super()如何调用下一个类。他通过使用显示方法解析顺序的help()方法直观地演示了这一点。

在演讲结束时,他描述了在方法分辨率线末端需要超级塞子类。我用谷歌搜索了这个词并没有发现任何东西,所以不清楚他在这里究竟是什么意思 - 这个塞子类在实践中如何运作?

1 个答案:

答案 0 :(得分:4)

链中的方法只是使用super()来调用下一个方法。通常这些都在层次结构中的基类上。

毕竟,如果MRO链中没有下一个方法可以调用,那么您就会收到错误,因为首先没有下一个方法可以查找。

雷蒙德非常明确地说明了这一点;从视频转录:

  

你把塞子对象放在最后; object,您可以创建一个对象,将其称为Root,并将其放入,并且所有这些都是具有感兴趣的方法的东西;传递它,但实际上并没有调用super()。链末端的某个人不应该拨打super()