gpt4 book ai didi

python - 为什么 super() 的隐式性质是一个令人满意的特性?

转载 作者:太空宇宙 更新时间:2023-11-03 11:05:14 26 4
gpt4 key购买 nike

这是一个关于 very popular super( ) question 的附加问题.问题基本上是“我为什么要使用 super( )”,答案是“因为您不必引用父类,这很好。”​​

我的问题是……为什么这是一件好事?无论“显式优于隐式?”发生了什么?假设我正在阅读其他一些开发人员的代码并且我看到:

class Foo(Bar, Baz):
def my_method(self):
super(Foo, self).who_knows( ) #nobody knows!

我现在必须深入了解 BarBaz 以及 它们所有父类的文档,一直向上查找who_knows( ) 从哪里被调用以及它做了什么。我还需要对方法解析顺序有一个完美的理解,以便知道 哪个 who_knows( ) 实际被调用了。

现在让我们看一下没有 super( ) 的相同代码:

class Foo(Bar, Baz):
def my_method(self):
Baz.who_knows(self) #ah, Baz knows

更加清晰,无需猜测或理解所需的 MRO。

我提出这个问题并不是为了展开争论或哲学讨论。我只是希望有人可以向我展示一些非常清楚的示例,其中 super( ) 的隐式性质实际上是可取的,因为老实说我没有看到它。

最佳答案

对于这种情况,super(Foo, self).who_knows() 根本不是一件好事。我会做 self.who_knows()

super() 通常用于覆盖父类的同名方法。

关于python - 为什么 super() 的隐式性质是一个令人满意的特性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21211344/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com