关于下面定义的三个类,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。
1条答案
按热度按时间ef1yzkbh1#
每当它到达
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
.