对于下面定义的三个类,Python解释器到达第1行、第2行和第3行的顺序是什么?
class GranParent():
def __init__(self):
#line 1
class Parent(GrandParent):
def __init__(self):
#line 2
super().__init__()
class Child(Parent):
def __init__(self):
super().__init__()
#line 3
ob = Child()
a)第3行,第2行,第1行
b)第2行,第3行,第1行
c)第2行,第1行,第3行
d)第1行,第2行,第3行
e)第1行,第3行,第2行
f)以上均为
我最初的猜测是d)因为类子继承自继承自祖父母类的父类,但答案键说答案是c。我不知道为什么是c。
每当它到达super().__init__()
行时,它就停在当前帧中的该点,然后运行新的初始化器帧。
在Child
中,super().__init__()
在#line 3
之前,因此它跳到Parent
的__init__
。首先运行#line 2
,然后运行,然后运行它到达super().__init__()
行,再次跳转到GrandParent
的__init__
,并运行#line 1
。
在GrandParent
的__init__
完成后,它返回并继续前一帧,即Parent
的__init__
,但那里没有任何要执行的内容。它再次回到Chils
的__init__
,最后执行#line 3
。