1、super函数的作用:调用父类的方法
class A:
def __init__(self):
print('A')
class B(A):
def __init__(self):
print('B')
super().__init__()
b = B()
结果
B
A
2、什么场景下使用super函数:在代码重用的场景下使用
import threading
class MyThread(threading.Thread):
def __init__(self, thread_name, user):
self.user = user
super().__init__(name=thread_name)
3、super函数的运行过程:正确的理解不是简单的调用一个类的父类,而是根据一个类中的mro顺序进行查新并调用
class D:
def __init__(self):
print('d')
class C(D):
def __init__(self):
print('c')
super().__init__()
class B(D):
def __init__(self):
print('b')
super().__init__()
class A(B, C):
def __init__(self):
print('a')
super().__init__()
a = A()
print(A.__mro__)
结果
a
b
c
d
(<class '__main__.A'>, <class '__main__.B'>, <class '__main__.C'>, <class '__main__.D'>, <class 'object'>)