或者我应该只显式引用我想调用其方法的超类?
在引用它们的构造函数时重复超类的名称似乎很脆弱,但是这个页面http://fuhm.net/super-harmful/对使用super()做了一些很好的论据.
sun*_*ang 10
专家Python编程一书在第3章讨论了"超级陷阱"的主题.值得一读.以下是本书的结论:
超级用法必须保持一致:在类层次结构中,super应该在任何地方或任何地方使用.混合超级和经典电话是一种令人困惑的做法.人们倾向于避免超级,因为他们的代码更加明确.
编辑:今天我再次阅读本书的这一部分.我会复制一些句子,因为超级使用很棘手:
你可以使用超级,但正如文章所说,有缺点.只要您了解它们,使用该功能就没有问题.就像人们说"使用组合,而不是继承"或"从不使用全局变量".如果该功能存在,则有一个原因.请务必明白为什么以及明智地使用它们.
super() 试图为您解决多重继承的问题;很难复制它的语义,除非你完全确定,否则你当然不应该创建任何新的语义。
对于单一继承来说,两者之间确实没有区别
class X(Y):
def func(self):
Y.func(self)
Run Code Online (Sandbox Code Playgroud)
和
class X(Y):
def func(self):
super().func()
Run Code Online (Sandbox Code Playgroud)
所以我想这只是品味问题。