python的super的疑问
class Base(object): def func_1(self):
print('this is base')
class A(Base):
def func_1(self):
super().func_1()
print('this is A')
class B(Base):
def func_1(self):
super().func_1()
print('this is B')
class C(A, B):
def func_1(self):
super().func_1()
print('this is c')
print(C.mro())
C().func_1()
发现自己一直没有弄清楚super,请问为什么会输出base、B、A、C的顺序呢?主要是为什么base后面不是输出A而是B
发现和类的继承顺序正好相反
回答:
help(C)
Help on class C in module __main__:class C(A, B)
| Method resolution order:
| C
| A
| B
| Base
| builtins.object
|
| Methods defined here:
|
| func_1(self)
|
...
“从左到到右”的意思,C继承关系最近的是A, 然后是B,最后是上层BASE。
调用方法时的入栈顺序是 C A B Base,
出栈顺序是Base B A C,
所以这个输出没什么可迷惑的啊
回答:
给你推荐个网站:http://pythontutor.com/visual...
以上是 python的super的疑问 的全部内容, 来源链接: utcz.com/a/162474.html