• Python面向对象特性——多继承(概念、语法、代码演练、使用注意事项)


    欢迎关注博主 python老鸟 或 前往 『Python自学网』, 从基础入门免费课程开始,逐步深入学习python全栈体系课程,适合新手入门到精通全栈开发。


    免费专栏传送门:《Python基础教程


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

    一、多继承概念、语法

    多继承概念:

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

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

     

    语法:

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

    代码体验:

    1. class A:
    2. def test(self):
    3. print("test方法")
    4. class B:
    5. def demo(self):
    6. print("demo方法")
    7. class C(A, B):
    8. pass
    9. # 创建子类对象
    10. c = C()
    11. c.test()
    12. c.demo()

    执行结果:

     

    多继承好处:

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

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

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

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

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

     

    代码体验:

    1. class A:
    2. def test(self):
    3. print("A --- test方法")
    4. def demo(self):
    5. print("A --- demo方法")
    6. class B:
    7. def demo(self):
    8. print("B --- demo方法")
    9. def test(self):
    10. print("B --- test方法")
    11. class C(A, B):
    12. pass
    13. # 创建子类对象
    14. c = C()
    15. c.test()
    16. c.demo()

    执行结果:

     

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

     

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

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

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

  • 相关阅读:
    计算几何+2sat:1020T3
    使用workerman/redis-queue做队列(订阅)
    用Python来表白,把情书写进她的照片里
    Scrapy第二篇:构建scrapy项目
    【软件设计师-从小白到大牛】下午题基础篇:第二章 数据库设计
    详解GMM高斯混合模型EM模型
    Linux 多进程解决客户端与服务器端通信
    大橙子vfed 5.0去授权完美破解主题模版源码 | 苹果CMS
    AI容器化部署开发尝试 (一)(Pycharm连接docker,并部署django测试)
    C语言之qsort()函数的模拟实现
  • 原文地址:https://blog.csdn.net/weixin_48728769/article/details/126805386