我刚刚看过Raymond Hettinger的Super considered super演讲。在其中,他描述了super()
如何调用下一个类。他通过使用显示方法解析顺序的help()
方法直观地演示了这一点。
在演讲结束时,他描述了在方法分辨率线末端需要超级塞子类。我用谷歌搜索了这个词并没有发现任何东西,所以不清楚他在这里究竟是什么意思 - 这个塞子类在实践中如何运作?
答案 0 :(得分:4)
链中的方法只是不使用super()
来调用下一个方法。通常这些都在层次结构中的基类上。
毕竟,如果MRO链中没有下一个方法可以调用,那么您就会收到错误,因为首先没有下一个方法可以查找。
雷蒙德非常明确地说明了这一点;从视频转录:你把塞子对象放在最后; 不
object
,您可以创建一个对象,将其称为Root
,并将其放入,并且所有这些都是具有感兴趣的方法的东西;传递它,但实际上并没有调用super()
。链末端的某个人不应该拨打super()
。