美文网首页
python面向对象特性多继承(概念、构造方法、代码演练、使用注

python面向对象特性多继承(概念、构造方法、代码演练、使用注

作者: 可可里西 | 来源:发表于2022-09-15 16:36 被阅读0次

    Python中面向对象中的三大特性分别是:封装、继承、多态。继承,子类可以拥有父类的所有属性和方法,之前讲到过单继承,每个子类只有一个父类这种情况叫做单继承。下面讲继承的另外一种情况,多继承。

    一、多继承概念、语法

    多继承概念:

    子类可以拥有多个父类,并且具有所有父类的属性和方法

    例如:孩子会继承自己的父亲和母亲的特性

    图片1.png

    语法:

    class 子类名(父类名1, 父类名2...):      
        pass
    

    代码体验:

    class A:
    
        def test(self):
            print("test方法")
    
    
    class B:
    
        def demo(self):
            print("demo方法")
    
    
    class C(A, B):
        pass
    
    
    # 创建子类对象
    c = C()
    
    c.test()
    c.demo()
    

    执行结果:

    图片2.png

    多继承好处:

    可以让子类对象同时具有多个父类的属性和方法。

    继承这个特性就是保证我们在开发过程中尽量的不让相同的代码重复的编写,降低代码的冗余度,如果两个父类的代码都已经开发完成,在实际开发中希望有一个类的对象具有两个父类的方法,就可以创建一个子类,让这个子类继承自多个父类。

    二、使用多继承的注意事项

    问题: 如果不同的父类中存在同名的方法,子类对象在调用方法时会调用哪一个父类中的方法呢?

    开发时,应该尽量避免这种容易产生混淆的情况。如果父类之间存在同名的属性或者方法,应该尽量避免使用多继承。

    图片3.png

    代码体验:

    class A:
    
        def test(self):
            print("A --- test方法")
    
        def demo(self):
            print("A --- demo方法")
    
    
    class B:
    
        def demo(self):
            print("B --- demo方法")
    
        def test(self):
            print("B --- test方法")
    
    
    class C(A, B):
        pass
    
    
    # 创建子类对象
    c = C()
    
    c.test()
    c.demo()
    

    执行结果:

    图片4.png

    此时,class C(A, B)中A在B之前,让子类先继承自A再继承自B,那么我们再换个顺序看看:

    图片5.png

    虽然说我这里知识简单的换下父类的位置,结果就变了。

    友情提示:具体调用哪一个父类的方法,在底层上是有专门的处理方式的,并不是在代码中简单的调整下父类的顺序。

    下一篇文章是基于这篇文章的科普知识,分别是Python中的MRO —— 方法搜索顺序、新式类和旧式(经典)类。

    更多相关Python教程可以移步去Python自学网 ,从基础入门免费课程开始,逐步深入学习python全栈体系课程,适合新手入门到精通全栈开发。

    相关文章

      网友评论

          本文标题:python面向对象特性多继承(概念、构造方法、代码演练、使用注

          本文链接:https://www.haomeiwen.com/subject/iitdortx.html