多重继承 | Python从入门到精通:高阶篇之三十二

简介: 在Python中是支持多重继承的,也就是我们可以为一个类同时指定多个父类。这是与别的大部分语言不一致的。但在开发中没有特殊的情况,应该尽量避免使用多重继承,因为多重继承会让我们的代码过于复杂。

super() | Python从入门到精通:高阶篇之三十一

多重继承

我们通过一个例子来看一下:

class A(object):
    def test(self):
        print('AAA')

class B(object):
    def test2(self):
        print('BBB')

class C(B):
    pass 

类名.__bases__ 这个属性可以用来获取当前类的所有父类 。

print(C.__bases__)
print(B.__bases__)

执行结果:

image.png
image.png

在Python中是支持多重继承的,也就是我们可以为一个类同时指定多个父类。可以在类名的()后边添加多个类,来实现多重继承。

class C(A,B):
    pass

多重继承,会使子类同时拥有多个父类,并且会获取到所有父类中的方法。

print(C.__bases__)

执行结果:

image.png

此时C继承了A,B,此时A,B,C的关系

image.png

调用test:

c = C()

c.test()
c.test2()

执行结果:

image.png

在开发中没有特殊的情况,应该尽量避免使用多重继承,因为多重继承会让我们的代码过于复杂。
在B中添加一个方法:

class A(object):
    def test(self):
        print('AAA')

class B(object):
    def test(self):
        print('B中的test()方法~~')

    def test2(self):
        print('BBB') 

class C(A,B):
    pass

c = C()

c.test()

执行结果:

image.png

如果A中没有test方法,才会调用B中的。

class A(object):
    pass

执行结果:

image.png

如果多个父类中有同名的方法,则会现在第一个父类中寻找,然后找第二个,然后找第三个......前边父类的方法会覆盖后边父类的方法。

我们通过图来分析:

image.png

D继承了A,B,C,如果此时D中有test()方法,则直接输出就行,若没有,则需要先去第一个父类中找,(我们以A,B,C为例),此时我们应该去A中找,若A中没有,则需要去A的父类(object)中去找,若没有继续找,此时去第二个父类B中找,若没有则去B的父类中找,如果已经找过一次,则不会继续去找(提高性能),则去第三个C中找,若没有,则去它的父类中找,因为C的父类是A,B,已经找过,则不会再继续找。

image.png

配套视频课程,点击这里查看

获取更多资源请订阅Python学习站

相关文章
|
1月前
|
API 数据安全/隐私保护 开发者
Python自定义异常:从入门到实践的轻松指南
在Python开发中,自定义异常能提升错误处理的精准度与代码可维护性。本文通过银行系统、电商库存等实例,详解如何创建和使用自定义异常,涵盖异常基础、进阶技巧、最佳实践与真实场景应用,助你写出更专业、易调试的代码。
72 0
|
1月前
|
IDE 开发工具 数据安全/隐私保护
Python循环嵌套:从入门到实战的完整指南
循环嵌套是Python中处理多维数据和复杂逻辑的重要工具。本文通过实例讲解嵌套循环的基本用法、常见组合、性能优化技巧及实战应用,帮助开发者掌握其核心思想,避免常见错误,并探索替代方案与进阶方向。
82 0
|
3月前
|
Python
Python字符串格式化利器:f-strings入门指南
Python字符串格式化利器:f-strings入门指南
178 80
|
7月前
|
程序员 UED Python
Python入门:3.Python的输入和输出格式化
在 Python 编程中,输入与输出是程序与用户交互的核心部分。而输出格式化更是对程序表达能力的极大增强,可以让结果以清晰、美观且易读的方式呈现给用户。本文将深入探讨 Python 的输入与输出操作,特别是如何使用格式化方法来提升代码质量和可读性。
Python入门:3.Python的输入和输出格式化
|
7月前
|
机器学习/深度学习 人工智能 算法框架/工具
Python入门:1.Python介绍
Python是一种功能强大、易于学习和运行的解释型高级语言。由**Guido van Rossum**于1991年创建,Python以其简洁、易读和十分工程化的设计而带来了庞大的用户群体和丰富的应用场景。这个语言在全球范围内都被认为是**创新和效率的重要工具**。
Python入门:1.Python介绍
|
1月前
|
监控 Linux 数据安全/隐私保护
Python实现Word转PDF全攻略:从入门到实战
在数字化办公中,Python实现Word转PDF自动化,可大幅提升处理效率,解决格式兼容问题。本文详解五种主流方案,包括跨平台的docx2pdf、Windows原生的pywin32、服务器部署首选的LibreOffice命令行、企业级的Aspose.Words,以及轻量级的python-docx+pdfkit组合。每种方案均提供核心代码与适用场景,并涵盖中文字体处理、表格优化、批量进度监控等实用技巧,助力高效办公自动化。
279 0
|
2月前
|
数据采集 分布式计算 大数据
不会Python,还敢说搞大数据?一文带你入门大数据编程的“硬核”真相
不会Python,还敢说搞大数据?一文带你入门大数据编程的“硬核”真相
76 1
|
3月前
|
NoSQL MongoDB 开发者
Python与MongoDB的亲密接触:从入门到实战的代码指南
本文详细介绍了Python与MongoDB结合使用的实战技巧,涵盖环境搭建、连接管理、CRUD操作、高级查询、索引优化、事务处理及性能调优等内容。通过15个代码片段,从基础到进阶逐步解析,帮助开发者掌握这对黄金组合的核心技能。内容包括文档结构设计、批量操作优化、聚合管道应用等实用场景,适合希望高效处理非结构化数据的开发者学习参考。
198 0
|
4月前
|
数据管理 开发者 Python
揭秘Python的__init__.py:从入门到精通的包管理艺术
__init__.py是Python包管理中的核心文件,既是包的身份标识,也是模块化设计的关键。本文从其历史演进、核心功能(如初始化、模块曝光控制和延迟加载)、高级应用场景(如兼容性适配、类型提示和插件架构)到最佳实践与常见陷阱,全面解析了__init__.py的作用与使用技巧。通过合理设计,开发者可构建优雅高效的包结构,助力Python代码质量提升。
386 10

推荐镜像

更多