Python面向对象编程03:类继承和其衍生术语

前面我们讲到过正则表达式字符等,上一篇分享了面向对象编程和类的结构,最后稍微提到了继承。

Python面向对象编程:深度认识类class_

Python面向对象编程:入门类和对象_

python入门到进阶,爬虫数据分析全套资料分享讲解

Python开发基础总结之套接字+字符串+正则表达式_

Python开发基础总结之函数+闭包+字典+列表_

Python开发基础总结之XML+time+OO_

这次我们把继承和继承衍生的术语一并解释

Python支持单继承,多继承

趁着印象比较深,学委拿了前篇文章的代码稍作修改:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2021/11/15 11:58 下午
# @Author : LeiXueWei
# @CSDN/Juejin/Wechat: 雷学委
# @XueWeiTag: CodingDemo
# @File : __init__.py.py
# @Project : hello"""
下面是一个程序员类定义
"""class Programmer():def code(self):print("life is short, why not python?")"""
下面是一个学生类定义
"""class Student(object):"""这里是一个学生类定义"""def __init__(self, name):self.name = namedef get_name(self):return self.namedef set_name(self, name):self.name = namedef study(self):print(f"{self.name} : 好好学习,天天向上!")class PrimarySchoolStudent(Student, Programmer):passprint("*" * 16)
xiaopengyou = PrimarySchoolStudent("一个小学生(学委的一个粉丝)")
xiaopengyou.study()
xiaopengyou.code()print("类的基类:", PrimarySchoolStudent.__bases__)
复制代码

这是运行结果:

可以看到,非常轻松就创建了一个具备两个类行为和属性的新类PrimarySchoolStudent。

下面这段补充一下,Python提供了工具函数‘issubclass’方便我们识别手中的类 跟 某个类的关系。

‘isinstance’ 也帮助我们识别某个对象跟某个类的关系。

# 判断对象是由哪个类衍的子类吗
print("PrimarySchoolStudent 是 Programmer 的子类吗 ?", issubclass(PrimarySchoolStudent, Programmer))
print("PrimarySchoolStudent 是 Student 的子类吗 ?", issubclass(PrimarySchoolStudent, Student))
print("Student 是 Programmer 的子类吗 ?", issubclass(Student, Programmer))# 判断对象是由哪个类创建出来的实例
print("xiaopengyou 是 PrimarySchoolStudent 的实例 ?", isinstance(xiaopengyou, PrimarySchoolStudent))
print("xiaopengyou 是 Programmer 的实例吗 ?", isinstance(xiaopengyou, Programmer))
print("xiaopengyou 是 Student 的实例吗 ?", isinstance(xiaopengyou, Student))
print("xiaopengyou 是 dict 的实例吗 ?", isinstance(xiaopengyou, dict))
复制代码

读者尽量复制运行这段代码加深一下印象。

有时候子不愿承父志,子类可以选择覆盖 - Overriding

比如这个小学生这个类,想要吧study函数重写为玩游戏。

在面向对象编程中,这是允许也是合法的!(除非像Java设置了final属性,这不在本文范畴)

那么,我修改一下:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2021/11/15 11:58 下午
# @Author : LeiXueWei
# @CSDN/Juejin/Wechat: 雷学委
# @XueWeiTag: CodingDemo
# @File : __init__.py.py
# @Project : hello
"""
下面是一个程序员类定义
"""class Programmer():def code(self):print("life is short, why not python?")"""
下面是一个学生类定义
"""class Student(object):"""这里是一个学生类定义"""def __init__(self, name):self.name = namedef get_name(self):return self.namedef set_name(self, name):self.name = namedef study(self):print(f"{self.name} : 好好学习,天天向上!")class PrimarySchoolStudent(Student, Programmer):def study(self):print(f"{self.name} :开开心心玩游戏!")print("*" * 16)
xiaopengyou = PrimarySchoolStudent("一个小学生(学委的一个粉丝)")
xiaopengyou.study()
xiaopengyou.code()
复制代码

再次说一次,继承让子类直接拥有了父类的函数和数据属性,可以直接访问拿来用。

然后本次更改只是比前面第一段代码多了一个函数,学委在PrimarySchoolStudent,重新定义了一个study函数。

所以子类的函数把父类函数覆盖了,(父类也蒙圈中,他从来不知道这件事!)注意必须说同名的函数!

好了,看看下面的运行结果:

总结

类继承产生父子传承,但是允许父子存在差异。今天说到这。

喜欢Python的朋友,请关注共重浩【编程简单学丶】

持续学习持续开发,编程很有趣,关键是把技术搞透彻讲明白。
欢迎关注编程简单学,点赞支持收藏!

Python面向对象编程:类继承和其衍生术语相关推荐

  1. 【轻松学】Python面向对象编程——类的设计、基础语法、继承、多态、类属性和类方法、单例设计

    文章目录 1. 类的设计 大驼峰命名法 1.1 类名的确定 1.2 属性和方法的确定 练习 1.1 练习 1.2 2. 面相对象基础语法 2.1 定义简单的类(只包含方法) 2.1.1 定义只包含方法 ...

  2. python编程例子-Python面向对象编程 - 类和实例

    一.preface 面向对象编程OOP:object oriented programming. OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数.Python是一门面向对象的编程语 ...

  3. Python面向对象编程——类的学习

    面向对象编程     面向对象编程--Object Oriented Programming,简称OOP,是一种程序设计思想.OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数. 面向 ...

  4. python多个对象调用类方法、且之间有联系_趣味解读Python面向对象编程 (类和对象)...

    一.面向对象简介 考虑现实生活中,我们的思维方式是放在学生这个个人上,是学生做了自我介绍.而不是像我们刚刚写出的代码,先有了介绍的行为,再去看介绍了谁. 用我们的现实思维方式该怎么用程序表达呢? 面向 ...

  5. Python面向对象编程(类编程)中self的含义详解(简单明了直击本质的解释)

    以下是博主认为的对self讲解得比较透彻又简洁明了的资料. 上面的资料把这个问题说得简单明了,大家认真看一遍相信就对self有个深入的了解了. 总结一下: 在Python为面向对象编程中,成员函数被调 ...

  6. Python - 面向对象编程 - 多继承

    继承的详解 https://www.cnblogs.com/poloyy/p/15216652.html 这篇文章讲的都是单继承,Python 中还有多继承 Python 多继承的背景 大部分面向对象 ...

  7. python面向对象图片_趣味解读Python面向对象编程 (类和对象)

    一.面向对象简介 考虑现实生活中,我们的思维方式是放在学生这个个人上,是学生做了自我介绍.而不是像我们刚刚写出的代码,先有了介绍的行为,再去看介绍了谁. 用我们的现实思维方式该怎么用程序表达呢?面向过 ...

  8. python对象编程例子-python 面向对象编程 类和实例

    class Student(object): #class后面紧接着是类名,即Student,类名通常是大写开头的单词,紧接着是(object),表示该类是从哪个类继承下来的.通常,如果没有合适的继承 ...

  9. python面向对象编程类的成员总结

    类.对象的三大成员之一字段,静态字段,动态字段 1.静态字段与普通字段的区别,静态字段属于类,普通字段属于有类生成的对象, 2.在内存中的存储方式也不一样,静态字段在内存中存储一份,普通字段每个对象存 ...

最新文章

  1. nginx 没有cookie_Nginx灰度升级实现说明
  2. 推动健全云生态 阿里云锐不可当
  3. 随机器学习兴起的Julia编程语言
  4. Linux+nfs配置开机启动,linux NFS配置:NFS开机自动启用及其原理
  5. 基于tensorflow2.0利用CNN与线性回归两种方法实现手写数字识别
  6. 台达b3伺服modbus通讯_【数控系统】台达伺服压机控制灵活 精准压合满足各种工序需求...
  7. React开发(283):控制文件不会被git追踪
  8. 汇编指令的学习1——ARM汇编的特点
  9. 今天看到{飞鸽传书2009}
  10. android 文本分页显示,Android查看带有列表视图的分页器并动态添加文本
  11. 创建型模式学习总结——设计模式学习笔记
  12. FHJ学长的心愿 QDUOJ 数论
  13. hprose-php教程,PHP RPC框架 hprose 上手玩玩
  14. 谁能辨我是雄雌?轩墨宝宝个人资料,轩墨宝宝CP照!
  15. iOS清除缓存功能开发
  16. python数据组织存在维度吗_用Python 爬取蔡徐坤新浪微博 10 万转发数据,从数据的维度看看存在多少假流量...
  17. C语言写的一个简单的计算器
  18. CSS 开源资源大全收集
  19. 软件测试人员的优势,软件测试师 求职八大优势
  20. 蓝汛之,PWM和timer定时器的使用【篇】

热门文章

  1. 行业盛会!2018中国人体微生物组大会
  2. R语言使用randomForest包构建随机森林模型(Random forests)、使用importance函数查看特征重要度、使用table函数计算混淆矩阵评估分类模型性能、包外错误估计OOB
  3. python使用matplotlib可视化、使用rcParams参数调整可视化图像中线条宽度、线条类型、文本字体、字体大小、字体颜色、字体类型、文本颜色等
  4. R语言e1071包中的支持向量机:构建nu-classification类型的支持向量机SVM并分析不同nu值惩罚下模型分类螺旋线型(sprials)线性不可分数据集的表现
  5. R语言compareGroups包绘制组间趋势(p for trend)实战:基于survival包lung数据集示例
  6. 自然语言处理NLP之BERT、BERT是什么、智能问答、阅读理解、分词、词性标注、数据增强、文本分类、BERT的知识表示本质
  7. 泊松回归(Poisson regression)、COX回归、分类器变回归器、回归算法注意事项、多重共线性问题
  8. Spark运行模式Local+Standalone+Yarn+mesos
  9. 调用本地html_requests-html:最简单的爬虫框架,看完你就会了
  10. 目标检测--RON: Reverse Connection with Objectness Prior Networks for Object Detection