Python中类的继承细讲

这篇具有很好参考价值的文章主要介绍了Python中类的继承细讲。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


前言

  在编写类时,并不是每次都要从空白开始。当要编写的类和另一个已经存在的类之间存在一定的继承关系时,就可以通过继承来达到代码重用的目的,提高开发效率。下面将介绍如何在 Python 中实现继承


一、继承的基本语法

  继承面向对象编程最重要的特性之一,它源于人们认识客观世界的过程,是自然界普遍存在的一种现象。例如,我们每一个人都从祖辈和父母那里继承了一些体貌特征,但是每个人却又不同于父母,因为每个人都存在自己的一些特性,这些特性是独有的,在父母身上并没有提现。在程序设计中实现继承,表示这个类拥有它继承的类的所有公有成员或者受保护成员。在面向对象编程中,被继承的类称为父类或基类新的类称为子类或者派生类
  通过继承不仅可以实现代码的重用,还可以通过继承来理顺类与类之间的关系。在 Python 中,可以在类定义语句中,类名右侧使用一对小括号将要继承的基类名称括起来,从而实现类的继承。具体的语法格式如下:

class ClassName(baseclasslist): 
	'''类的帮助信息'''  # 类文档字符串
	statement  # 类体

参数说明

  • ClassName:用于指定类名。
  • baseclasslist:用于指定要继承的基类,可以有多个,类名之间用逗号 “,” 分隔。如果不指定,将使用所有 Python 对象的基类 object
  • ‘’‘类的帮助信息’‘’:用于指定类的文档字符串,定义该字符串后,在创建类的对象时,输入类名和左侧的括号 “(” 后,将显示该信息。
  • statement:类体,主要由类变量(或类成员)、方法和属性等定义语句组成。如果在定义类时,没想好类的具体功能,也可以在类体中直接使用 pass 语句代替。

  例如,定义一个水果类 Fruit(作为基类),并在该类中定义一个类属性(用于保存水果默认的颜色)和一个 harvest() 方法,然后创建 Banana 类和 Grape 类,都继承自 Fruit 类,最后创建 Banana 类和 Grape 类的实例,并调用 harvest() 方法(在基类中编写),代码如下:

class Fruit:  # 定义水果类(基类)
    color = '绿色'  # 定义类属性
    def harvest(self, color):
        print('水果是{}的'.format(color))  # 输出的是形式参数color
        print('水果已经收获......')
        print('水果原来是{}的'.format(Fruit.color))  # 输出的是类属性color
class Banana(Fruit):  # 定义香蕉类(派生类)
    color = '黄色'
    def __init__(self):
        print('我是香蕉')
class Grape(Fruit):  # 定义葡萄类(派生类)
    color = '紫色'
    def __init__(self):
        print('我是葡萄')
banana = Banana()  # 创建类的实例(香蕉)
banana.harvest(banana.color)  # 调用基类的harvest()方法
grape = Grape()  # 创建类的实例(葡萄)
grape.harvest(grape.color)  # 调用基类的harvest()方法

  执行上面代码,将显示如下图所示结果:

python 类的继承,Python入门基础语法,python,类,继承,重写

  从运行结果中可以看出,虽然在 Banana 类和 Grape 类中没有 harvest() 方法,但是 Python 允许派生类访问基类的方法


二、方法重写

  基类的成员都会被派生类继承,当基类中的某个方法不完全适用于派生类时,就需要在派生类中重写父类的这个方法。
  在上面的实例代码中,基类里面定义的 harvest() 方法,无论派生类是什么水果都显示 “水果…”,而没有将水果的名字显示上去,如下图所示:

python 类的继承,Python入门基础语法,python,类,继承,重写

  如果想要针对不同水果给出不同的提示,可以在派生类中重写 harvest() 方法。代码如下:

class Fruit:  # 定义水果类(基类)
    color = '绿色'  # 定义类属性
    def harvest(self, color):
        print('水果是{}的'.format(color))  # 输出的是形式参数color
        print('水果已经收获......')
        print('水果原来是{}的'.format(Fruit.color))  # 输出的是类属性color
class Banana(Fruit):  # 定义香蕉类(派生类)
    color = '黄色'
    def __init__(self):
        print('我是香蕉')
    def harvest(self, color):
        print('香蕉是{}的'.format(color))  # 输出的是形式参数color
        print('香蕉已经收获......')
        print('香蕉原来是{}的'.format(Fruit.color))  # 输出的是类属性color
banana = Banana()  # 创建类的实例(香蕉)
banana.harvest(banana.color)  # 调用基类的harvest()方法

  运行上面代码后,结果显示如下:

我是香蕉
香蕉是黄色的
香蕉已经收获......
香蕉原来是绿色的

三、派生类中调用基类的 _ _init _ _() 方法

  在派生类中定义 _ _ init _ _() 方法时,不会自动调用基类的 _ _ init _ _() 方法。例如,定义一个 Fruit 类,在 _ _ init _ _() 方法中创建类属性 color,然后在 Fruit 类中定义一个 harvest() 方法,在该方法中输出类属性 color 的值,再创建继承自 Fruit 类的 Banana 类,最后创建 Banana 类的实例,并调用 harvest() 方法,代码如下:

class Fruit:  # 定义水果类(基类)
    def __init__(self, color = '绿色'):
        Fruit.color = color  # 定义类属性
    def harvest(self):
        print('水果原来是{}的'.format(Fruit.color))  # 输出的是类属性color
class Banana(Fruit):  # 定义香蕉类(派生类)
    def __init__(self):
        print('我是香蕉')
banana = Banana()  # 创建类的实例(香蕉)
banana.harvest()  # 调用基类的harvest()方法

  执行上面代码后,将显示如下图所示的异常信息。

python 类的继承,Python入门基础语法,python,类,继承,重写

  因此,要让派生类调用基类的 _ _ init _ _() 方法进行必要的初始化,需要在派生类使用 super() 函数调用基类的 _ _ init _ _() 方法,用法格式如下:

super()._ _init_ _([参数1, ....])

注意:如果基类的初始化方法中有参数传入,则这里需要在 _ _init_ _() 括号中写入形式参数

  在上面代码中加入 super()._ _ init _ _() 之后,代码及运行结果如下图所示:

python 类的继承,Python入门基础语法,python,类,继承,重写文章来源地址https://www.toymoban.com/news/detail-734659.html

到了这里,关于Python中类的继承细讲的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python面向对象编程(一)类的基础,关系,继承,封装,多态

    类的一些理论概念及其应用场景等基础内容此处不赘述 目录 python中一切皆对象 类的定义及基础 属性 方法 初始化方法  普通方法 类之间的关系 相互调用 依赖关系 关联关系 组合关系 三大特征----类的继承 重写父类方法 多继承 混合继承  三大特征----封装 三大特征----多态

    2024年02月10日
    浏览(79)
  • 【知识点】python中类的相互调用

    在 Python 中,类可以相互调用。这意味着一个类可以访问另一个类的方法或属性。下面是几个例子: 在同一个文件内,不同类的相互调用例子如下: 代码 在上面的代码中, Dealership 类调用了 Car 类。它通过创建一个 Car 对象来添加汽车,并通过循环遍历汽车列表来显示汽车的

    2023年04月10日
    浏览(36)
  • Python类的继承

    一、类的继承 众所周知,Python是面向对象编程。而面向对象编程主要好处之一便是代码的重用。Python实现代码重用的方法之一是通过继承。 继承是类和类之间的一种关系,是一种子类和父类的关系。如子类继承父类,而Python类中重要的两个东西便是属性和方法。那么Python的

    2024年01月25日
    浏览(35)
  • [Python] 类的继承

    在编程中,类的好处我们知道了,通过类我们可以源源不断的实例化出对象,这些对象用有相同的属性和方法,大大提高了程序代码的复用性。 在某些情况下,如果想要创建一个新的类,这个类除了要有旧类的所有属性和方法,还有一些其他的属性和方法,那么重新再去定义

    2024年02月15日
    浏览(32)
  • 【Python入门】Python基础语法

    前言 📕作者简介: 热爱跑步的恒川 ,致力于C/C++、Java、Python等多编程语言,热爱跑步,喜爱音乐的一位博主。 📗本文收录于Python零基础入门系列,本专栏主要内容为Python基础语法、判断、循环语句、函数、函数进阶、数据容器、文件操作、异常模块与包、数据可视化等,

    2024年02月03日
    浏览(80)
  • 【Python 零基础入门】基础语法

    当我们学习一门新语言, 首先要熟悉它的语法规则. 这就如同学习一门外语, 我们需要知道句子的结构, 词汇的使用和语法的规则. 与 Java 中的 “{}” 不同, Python 使用缩进. 缩进在 Python 中非常重要, 定义了代码的结构和层次. 通常用 4 个空格作为标准的缩进 (TAP 键). 在我们编写代

    2024年02月04日
    浏览(41)
  • Python入门教程 | Python 基础语法

    第一个字符必须是字母表中字母或下划线 _ 。 标识符的其他的部分由字母、数字和下划线组成。 标识符对大小写敏感。 在 Python 3中,可以用中文作为变量名,非 ASCII 标识符也是允许的了。默认情况下,Python 3 源码文件以 UTF-8 编码,所有字符串都是 unicode 字符串。 在Python中

    2024年02月11日
    浏览(56)
  • Python零基础入门(一)——Python简介与基础语法

    个人简介:机电专业在读研究生,CSDN内容合伙人,博主个人首页 Python入门专栏:《Python入门》欢迎阅读,一起进步!🌟🌟🌟 码字不易,如果觉得文章不错或能帮助到你学习,可以点赞👍收藏📁评论📒+关注哦!😊😊😊 Python是一门适合初学者入门的编程语言,本文将介

    2024年02月10日
    浏览(40)
  • 学习C++:C++进阶(六)如何在C++代码中调用python类,实例化python中类的对象,如何将conda中的深度学习环境导入C++项目中

    目录 1.应用场景 2.场景:利用maskrcnn深度学习网络实现语义分割 3.CMake配置python解释器

    2023年04月22日
    浏览(42)
  • 【Python入门】Python循环语句(while循环的基础语法)

    前言 📕作者简介: 热爱跑步的恒川 ,致力于C/C++、Java、Python等多编程语言,热爱跑步,喜爱音乐的一位博主。 📗本文收录于Python零基础入门系列,本专栏主要内容为Python基础语法、判断、循环语句、函数、函数进阶、数据容器、文件操作、异常模块与包、数据可视化等,

    2024年02月05日
    浏览(61)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包