Python 高级编程和异步IO并发编程 --04_9 super函数,真的是调用父类吗?

Malinda ·
更新时间:2024-11-13
· 732 次阅读

上面,b调用了class B,如何实现调用父类A?

from threading import Thread # 多线程编程 class My_Thread(Thread): def __init__(self,name,user): self.user = user # self.name = name super().__init__(name=name) # 此处直接调用父类,将构造函数交给父类去实例化,可以重用父类的代码 # 既然我们要重写B的构造函数,方法不一定是__init__方法,为什么还要去调用super? # super到底执行顺序是怎么样的? class A: def __init__(self): print("A") class B(A): def __init__(self): print("B") super().__init__() # super获取父类,并调用__init__函数 class C(A): def __init__(self): print("C") super().__init__() class D(B,C): def __init__(self): print("D") super(D,self).__init__() # D会调用父类,B/C均是父类,由于B在C之前,因此会先调用B的构造函数, # B也调用super,自己的父类A,但是实际上并没有这么干, # 而在调用mro,按照mro顺序执行,B到C,然后才到A if __name__ == "__main__": d = D() print(D.__mro__) C:\Users\Amber\PycharmProjects\test0\venv\Scripts\python.exe C:/Users/Amber/PycharmProjects/test0/Chapter03/super_test.py D B C A (, , , , ) Process finished with exit code 0
作者:世界非世界,是名世界!



io super 调用 父类 异步io Python

需要 登录 后方可回复, 如果你还没有账号请 注册新账号