sup*_*eme -3 python super python-3.x python-3.5
我如何知道 super() 在 MRO 中到底采用哪条路径?
阅读:Python\'s Super 被认为是有害的,Python\xe2\x80\x99s super() 被认为是超级!。
\n\n这些是两个很好的资源,应该可以回答您的所有问题。
\n\n简而言之,super()使用标准方法解析顺序 (MRO) 来查找您需要的方法。看看这张图片:
E 继承自 C 和 D。C 继承于 A,A 继承于object。D 继承自 B,B 继承自object。红色箭头显示在其搜索中使用的 MRO super()。
注意,不super()引用父类。尽管 A 继承自D 而不是 D,但在 MRO 中 D 排在第二位。因此,回答你的问题,“下一个”指的是 MRO。object