python奇怪的超级声明:多重自我

时间:2014-11-17 21:29:21

标签: python inheritance init

有人可以在configobj.py第1190行告诉我这条奇怪的一行:

Section.__init__(self, self, 0, self)

我不明白这种自我多元化的意义。

谢谢

1 个答案:

答案 0 :(得分:3)

让我们看一下__init__的{​​{1}}:

Section

出于某种原因,此代码的作者已决定多次将def __init__(self, parent, depth, main, indict=None, name=None): 传递给self Section。我没有详细查看代码,但这通常意味着可以构造对象,而在其他情况下,这些参数会有所不同(即,每次都不会__init__

因此,对于此特定调用,self表示的对象扮演各种角色,这就是为什么将对象多次传递给父类self的原因。因此,要理解为什么__init__被多次传递,您需要查看参数的目的,并了解为什么它们在这种情况下是相同的。可以想象的是,在参数不同的情况下,将创建实例,因为"角色"然后由不同的对象处理,而不是由同一个对象处理。