1. 什么是多重继承 ?            本节视频教程:https://www.bilibili.com/video/BV1o142197ex/

    多重继承是面向对象编程中的一个概念,指的是一个类可以同时从多个父类中继承属性和方法的能力

    1. 单一继承  : 类 B 继承自类 A,表示 B 是 A 的子类,继承了 A 的属性和方法
            A
            |
            B
    
    2. 多重继承 : 类 C 同时继承自类 A 和 B,表示 C 继承了 A 和 B 的属性和方法
            A    B
            \   /
              C
 
    3. 钻石继承:  类 D 继承自类 B 和 C,而 B 和 C 都继承自类 A。这种继承结构形成了一个钻石形状,称为钻石继承
              A
             / \
            B   C
             \ /
              D
 
    4. 多重继承链: 类 E 继承自类 C 和 D,而 C 和 D 分别继承自 A 和 B。这种继承结构形成了多重继承链

            A    B
           / \  /
          C   D
           \ /
            E


2. 如何使用多重继承 ?

    
    class Animal:
        def __init__(self, name):
            self.name = name

        def speak(self):
            raise NotImplementedError("Subclass must implement abstract method")

    class Dog(Animal):
        def speak(self):
            return f"{self.name} says Woof!"

    class Cat(Animal):
        def speak(self):
            return f"{self.name} says Meow!"

    class DogCat(Dog, Cat):
        def __init__(self, name):
            # 多重继承中需要显式调用各个父类的初始化方法
            super().__init__(name)

    # 创建一个 DogCat 实例
    my_pet = DogCat("Buddy")

    # 调用 speak 方法,由于多重继承,遵循 C3 算法的方法解析顺序
    print(my_pet.speak())  # 输出: Buddy says Woof!


    C3 算法: 在调用一个方法时,Python 解释器会按照确定的方法解析顺序,在继承链中逐个查找对应的方法实现, 先子类在父类


总结

    
    多重继承是面向对象编程中的一个重要概念,可以在适当的情况下提供更加灵活和复杂的类层次结构,
    但同时需要注意避免出现方法冲突和混乱的继承关系,合理使用多重继承能够有效地提高代码的复用性和灵活性