python的super的疑问

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的疑问

以上是 python的super的疑问 的全部内容, 来源链接: utcz.com/a/162474.html

回到顶部