Python 在这种情况下是否有必要使用super()。\uuuu init\uuuuuu()?
编辑: 哦,对不起,伙计们。这个问题是重复的,但不是链接问题的重复。我已经在这个问题中找到了我需要的,也许下次我应该尝试更多的关键词来搜索 在我的例子中,我在类Python 在这种情况下是否有必要使用super()。\uuuu init\uuuuuu()?,python,hierarchy,Python,Hierarchy,编辑: 哦,对不起,伙计们。这个问题是重复的,但不是链接问题的重复。我已经在这个问题中找到了我需要的,也许下次我应该尝试更多的关键词来搜索 在我的例子中,我在类StrKeyDict(dict)中实现update,\uuuuuuu setitem\uuuuuu,并且继承自dict的新的
StrKeyDict(dict)
中实现update
,\uuuuuuu setitem\uuuuuu
,并且继承自dict
的新的
可能会创建一个空的dict
,以确保更新
可以工作,我认为没有必要再次使用super()
代码来自fluentpython
当我们使用
d = StrKeyDict(a=1,b=2)
例如,要创建实例d,实际情况是:
1.调用从超类dict
继承的\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
来创建一个空的dict
实例
2.调用\uuuu init\uuuu
初始化实例
正如我所说,我在类StrKeyDict(dict)
中实现了update
,\uuuuuuuuuu设置项
。所以有必要在这里使用super()。
谢谢大家! 一般来说,这是必要的。而且它经常需要成为init中的第一个调用。它首先调用父类的init函数(dict
)。
它通常创建其底层数据结构 一般来说,这是必要的。而且它经常需要成为init中的第一个调用。它首先调用父类的init函数(dict
)。
它通常创建其底层数据结构 超类“\uuuu init\uuuu()
可能正在或可能没有执行初始化它所必需的操作。如果你知道是什么情况,你可以做出明智的决定。如果你不知道,最好打电话以防万一
现在,如果您不调用它,因为它是不必要的,并且基类的实现以一种必要的方式进行更改,那么您将不得不修复它
另一方面,在一些情况下,调用超类\uuuu init\uuuu()
是个坏主意,例如,如果它执行非常特定于超类的繁重计算,并且在子类中是不同的
FWIW我的方法总是调用super()。\uuuu init\uuuu()
,除非我有充分的理由不调用它。超类“\uuuu init\uuuu()
可能正在或可能没有做一些必要的事情来初始化它。如果你知道是什么情况,你可以做出明智的决定。如果你不知道,最好打电话以防万一
现在,如果您不调用它,因为它是不必要的,并且基类的实现以一种必要的方式进行更改,那么您将不得不修复它
另一方面,在一些情况下,调用超类\uuuu init\uuuu()
是个坏主意,例如,如果它执行非常特定于超类的繁重计算,并且在子类中是不同的
FWIW我的方法总是调用super()。\uuuu init\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu,从dict
继承而来的\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
可能会创建一个空的dict
来确保更新可以工作,我认为没有必要再次使用super()?特别是如果你只是想和每个人争论,你不想得到答案,你想被告知你是对的,你不是。我不是这个意思。问题出了点问题,我又编辑了一遍。“super()。\uuu init\uuu()
”的含义可能被误解,因此我将其改为“在这种情况下是否有必要使用super()。\uu init\uuu()
”。顺便说一句,我已经运行了这段代码,没关系,所以我只想知道这是不是“必要的”。我不明白这是一个重复的链接问题。这是关于传递给super()。\uuuu init()
,而不是关于是否应该调用它。super()。\uuuu init\uuuu()
与它在其他任何地方做的事情相同,它在超类上调用\uu init\uuuuuuuuuu()
,从dict
继承而来的\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
可能会创建一个空的dict
来确保更新可以工作,我认为没有必要再次使用super()?特别是如果你只是想和每个人争论,你不想得到答案,你想被告知你是对的,你不是。我不是这个意思。问题出了点问题,我又编辑了一遍。“super()。\uuu init\uuu()
”的含义可能被误解,因此我将其改为“在这种情况下是否有必要使用super()。\uu init\uuu()
”。顺便说一句,我已经运行了这段代码,没关系,所以我只想知道这是不是“必要的”。我不明白这是一个重复的链接问题。这是关于如何传递给super()。\uu init()
,而不是关于是否应该调用它。我认为您所说的“创建其底层数据结构”是super()的主要目的。在这种情况下,您所说的“创建其底层数据结构”是super()的主要目的在这种情况下,.\uuu init\uuu()
。
d = StrKeyDict(a=1,b=2)