【从零学习python 】48.Python中的继承与多继承详解

简介: 【从零学习python 】48.Python中的继承与多继承详解

在Python中,继承可以分为单继承、多继承和多层继承。

单继承

子类只继承一个父类,继承概念表示子类获得了父类的所有方法和属性。

继承语法

class 类名(父类名):
    pass

类继承自父类,可以享受父类中已经封装好的方法,不需要再次定义。子类中应该根据职责封装子类特有的属性和方法。

继承具有传递性,例如Dog类继承自AnimalXiaoTianQuan又继承自Dog类,那么XiaoTianQuan类就具有了Animal类里的所有属性和方法。

子类拥有父类以及父类的父类中封装的所有属性和方法。

思考问题:

  • XiaoTianQuan能否调用Animalrun()方法?
  • XiaoTianQuan能够调用Cat里的方法吗?

多继承

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

语法格式

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

使用多继承时需要注意以下事项

  • 如果不同的父类中存在同名的方法,子类对象在调用方法时,会调用哪个父类的方法?应尽量避免这种容易产生混淆的情况。如果多个父类之间存在同名的属性或方法,应尽量避免使用多继承。

Python中的MRO

Python中针对类提供了一个内置属性__mro__,可以用来查看方法的搜索顺序。MRO是method resolution order的简称,主要用于在多继承时判断方法属性的调用顺序。

示例代码如下:

print(C.__mro__)

输出结果为:

(<class '__main__.C'>, <class '__main__.A'>, <class '__main__.B'>, <class 'object'>)

在调用方法时,按照__mro__的输出结果从左至右的顺序查找:

  • 如果在当前类中找到方法,就直接执行,不再向下搜索。
  • 如果没有找到,就顺序查找下一个类中是否有对应的方法,如果找到,就直接执行,不再继续向下搜索。
  • 如果找到了最后一个类,依然没有找到方法,程序就会报错。

新式类和旧式(经典)类

object是Python中所有对象的基类,提供了一些内置的属性和方法,可以使用dir函数查看。

  • 新式类:以object为基类的类,推荐使用。
  • 经典类:不以object为基类的类,不推荐使用。

在Python3.x以后定义类时,如果没有指定父类,这个类会默认继承自object,所以,Python3.x版本定义的类都是新式类。

在Python2.x中定义类时,如果没有指定父类,则不会继承自object

为了保证代码在Python2.x和Python3.x中都能够运行,在定义类时,如果一个类没有父类,建议统一继承自object

示例代码:

class 类名(object):
    pass
相关文章
|
1月前
|
PyTorch Linux 算法框架/工具
pytorch学习一:Anaconda下载、安装、配置环境变量。anaconda创建多版本python环境。安装 pytorch。
这篇文章是关于如何使用Anaconda进行Python环境管理,包括下载、安装、配置环境变量、创建多版本Python环境、安装PyTorch以及使用Jupyter Notebook的详细指南。
267 1
pytorch学习一:Anaconda下载、安装、配置环境变量。anaconda创建多版本python环境。安装 pytorch。
|
1月前
|
机器学习/深度学习 人工智能 架构师
Python学习圣经:从0到1,精通Python使用
尼恩架构团队的大模型《LLM大模型学习圣经》是一个系统化的学习系列,初步规划包括以下内容: 1. **《Python学习圣经:从0到1精通Python,打好AI基础》** 2. **《LLM大模型学习圣经:从0到1吃透Transformer技术底座》**
Python学习圣经:从0到1,精通Python使用
|
1月前
|
机器学习/深度学习 缓存 PyTorch
pytorch学习一(扩展篇):miniconda下载、安装、配置环境变量。miniconda创建多版本python环境。整理常用命令(亲测ok)
这篇文章是关于如何下载、安装和配置Miniconda,以及如何使用Miniconda创建和管理Python环境的详细指南。
398 0
pytorch学习一(扩展篇):miniconda下载、安装、配置环境变量。miniconda创建多版本python环境。整理常用命令(亲测ok)
|
1月前
|
机器学习/深度学习 人工智能 架构师
|
1月前
|
机器学习/深度学习 缓存 Linux
python环境学习:pip介绍,pip 和 conda的区别和联系。哪个更好使用?pip创建虚拟环境并解释venv模块,pip的常用命令,conda的常用命令。
本文介绍了Python的包管理工具pip和环境管理器conda的区别与联系。pip主要用于安装和管理Python包,而conda不仅管理Python包,还能管理其他语言的包,并提供强大的环境管理功能。文章还讨论了pip创建虚拟环境的方法,以及pip和conda的常用命令。作者推荐使用conda安装科学计算和数据分析包,而pip则用于安装无法通过conda获取的包。
83 0
|
1月前
|
Python
python学习之旅(基础篇看这篇足够了!!!)(下)
python学习之旅(基础篇看这篇足够了!!!)(下)
28 0
|
1月前
|
存储 程序员 Python
python学习之旅(基础篇看这篇足够了!!!)(上)
python学习之旅(基础篇看这篇足够了!!!)(上)
36 0
|
开发者 Python
​既是爸爸又是爷爷?Python 多继承中的一个诡异现象
​既是爸爸又是爷爷?Python 多继承中的一个诡异现象
174 0
​既是爸爸又是爷爷?Python 多继承中的一个诡异现象
|
5天前
|
存储 数据挖掘 开发者
Python编程入门:从零到英雄
在这篇文章中,我们将一起踏上Python编程的奇幻之旅。无论你是编程新手,还是希望拓展技能的开发者,本教程都将为你提供一条清晰的道路,引导你从基础语法走向实际应用。通过精心设计的代码示例和练习,你将学会如何用Python解决实际问题,并准备好迎接更复杂的编程挑战。让我们一起探索这个强大的语言,开启你的编程生涯吧!
|
11天前
|
机器学习/深度学习 人工智能 TensorFlow
人工智能浪潮下的自我修养:从Python编程入门到深度学习实践
【10月更文挑战第39天】本文旨在为初学者提供一条清晰的道路,从Python基础语法的掌握到深度学习领域的探索。我们将通过简明扼要的语言和实际代码示例,引导读者逐步构建起对人工智能技术的理解和应用能力。文章不仅涵盖Python编程的基础,还将深入探讨深度学习的核心概念、工具和实战技巧,帮助读者在AI的浪潮中找到自己的位置。
下一篇
无影云桌面