"""super()可以帮我们执行MRO中下一个父类的⽅法,通常super()有两个使用的地方:1. 可以访问父类的构造方法2. 当子类⽅法想调用父类(MRO)中的方法"""# 实例一class Foo: def __init__(self, a, b, c): self.a = a self.b = b self.c = c class Bar(Foo): def __init__(self, a, b, c, d): super().__init__(a, b, c) # 调用父类的构造方法 self.d = d b = Bar(1, 2, 3, 4)print(b.__dict__)"""结果:{'a': 1, 'b': 2, 'c': 3, 'd': 4}"""# 实例二class Foo: def func1(self): super().func1() # 2、 此时找的是MRO顺序中下⼀个继承类的func1()⽅法,即Ku的下一个父类Bar;报错 AttributeError: 'super' object has no attribute 'func1' print("我的⽼家. 就住在这个屯")class Bar: def func1(self): print("你的⽼家. 不在这个屯") # 3、 打印class Ku(Foo, Bar): def func1(self): super().func1() # 1、此时super找的是Foo print("他的老家. 不知道在哪个屯")class Test(Ku): def func2(self): super(Ku, self).func1()k = Ku()k.func1() """4、result:你的⽼家. 不在这个屯我的⽼家. 就住在这个屯他的老家. 不知道在哪个屯"""k1 = Foo()k1.func1() """result:# AttributeError: 'super' object has no attribute 'func1'"""test = Test()test.func2()"""result:你的⽼家. 不在这个屯我的⽼家. 就住在这个屯"""