程序猿大战Python——面向对象——继承基础

2024-06-23 01:44

本文主要是介绍程序猿大战Python——面向对象——继承基础,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

定义类的几种语法

==目标:==了解定义类的标准语法。

我们知道,可以使用class关键字定义类。

在类的使用中,定义方式有三种:

(1)【类名】

(2)【类名()】

(3)【类名(object)】

说明:区别在于类名后面是否加其他内容。

方式1语法:

class 类名:代码...

方式2语法:

class 类名():代码...

方式3语法:

class 类名(object):   # 推荐代码...

说明:方式3是定义类最常见的语法。

例如,一起来完成:

(1)使用方式1/2/3分别定义老师类、学生类、手机类;

(2)当成功定义后,观察类的效果。

# 1.类名
# class Teacher:
class Teacher:pass
​
​
# 2.类名()
class Student():  # 删除()pass
​
​
# 3.类名(object)
class Phone(object):   # 标准pass

==总结:==

(1)定义一个类的语法有3种,但是更规范标准的是();==A、类名(object)==;B、类名();

(2)注意:在实际应用中,建议都采用【类名(object)】方式来定义类。

==休息一下,16:40继续上课。==

什么是继承

==目标:==了解什么是继承?

在现实生活中,继承一般指的是:子女继承父辈的财产。

说明:当继承了父辈的财产后,则归子女所有。

类似的,在面向对象中,当子类继承父类后,则:子类拥有了父类的属性和方法。

继承语法:

class 父类名(object):代码...
class 子类名(父类名):代码...

说明:

(1)建议在定义父类时,都采用【类名(object)】语法;

(2)当子类拥有了父类的属性和方法后,能提升代码的复用性。

例如,一起来完成:

(1)Father类有一个性别属性,默认为男,同时,Father跑步速度快;

(2)如果Son类也想要拥有这些属性和方法,该怎么做呢?

(3)执行程序,观察程序效果。

# 1.定义父类
class Father(object):def __init__(self):self.sex = "男"
​def run(self):print("跑步很快...")
​
# 2.定义子类
# class Son(object):
#     def __init__(self):
#         self.sex = "男"
#
#     def run(self):
#         print("跑步很快...")
​
# 3.改进
class Son(Father):pass
​
# 4.输出
son = Son()
print(f"属性:{son.sex}")
son.run()

==总结:==

(1)子类继承父类的语法是:class 子类名(父类名): ...;

(2)注意:object类可以称为基类、顶级类或超类,而案例中的Son类一般称为()、派生类。==A、子类==;B、父类;

单继承

==目标:==掌握单继承的使用。

单继承指的是:一个子类继承一个父类。语法:

class 子类名(父类名):代码...

接着,一起来听个故事。故事主线是:一个徒弟跟着老师傅学习摊煎饼……

例如,一起来完成:

(1)从前,有个摊煎饼的老师傅[Master],在煎饼果子界摸爬滚打多年,研发了一套精湛的摊煎饼技术;

(2)渐渐地,老师傅老了,就想着把这套技术传授给他唯一的最得意的徒弟[TuDi];

(3)试着通过初始化、无参、定义方法与单继承来模拟程序。

# 1.定义父类:老师傅
# 配方
# 摊煎饼
class Master(object):def __init__(self):self.pei_fang = "【独创古法配方】"
​def make_cake(self):print("老师傅用古法配方摊煎饼果子...")
​
# 2.定义子类:徒弟
class TuDi(Master):pass
​
# 3.创建对象
fang_ge = TuDi()
print(fang_ge.pei_fang)
fang_ge.make_cake()

==总结:==

(1)单继承就是一个子类继承了一个父类,语法:class 子类名(父类名): ...;

(2)注意:当子类继承了父类后,子类可以拥有父类的属性和方法。

多继承

==目标:==掌握多继承的使用。

多继承指的是:一个类同时继承了多个父类。语法:

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

继续,回到摊煎饼的故事主线。

例如,一起来完成:

(1)徒弟是个爱学习的好孩子,想学习更多的摊煎饼技术;

(2)于是,在百度搜索到黑马程序员学校[School],报班来培训学习如何摊煎饼;

(3)使用多继承形式模拟程序。

# 1.定义父类:老师傅
class Master(object):def __init__(self):self.pei_fang = "【独创古法配方】"
​def make_cake(self):print("老师傅用古法配方摊煎饼果子...")
# 2.学校
class School(object):def __init__(self):self.pei_fang = "【科技与狠活之黑马配方】"
​def make_cake(self):print("===========采用黑马配方制作煎饼果子!!")
​
# 3.定义子类:徒弟
class TuDi(Master,School):pass

==总结:==

(1)当一个类同时继承了多个父类时,这种行为就叫做();==A、多继承==;B、单继承;

(2)注意:在Python面向对象中,继承包含:单继承、多继承、多层继承。

子类调用方法的顺序

==目标:==了解子类调用父类方法的顺序。

当子类同时继承多个父类,并调用多个父类同名方法的顺序,查看时使用:

类名.__mro__
类名.mro()

例如,一起来完成:

(1)可以发现老师傅[Master]、培训学校[School]都有摊煎饼方法;

(2)在徒弟对象中调用摊煎饼方法,会执行哪个父类的方法呢?

(3)思考:当给父类培训学校[School]新增编程方法后,子类能调用方法吗?

# 1.定义父类:老师傅
class Master(object):def __init__(self):self.pei_fang = "【独创古法配方】"
​def make_cake(self):print("老师傅用古法配方摊煎饼果子...")
# 2.学校
class School(object):def __init__(self):self.pei_fang = "【科技与狠活之黑马配方】"
​def make_cake(self):print("===========采用黑马配方制作煎饼果子!!")
​def programming(self):print("====培训大数据开发!")
​
# 3.定义子类:徒弟
class TuDi(Master,School):pass
​
# 创建对象、调用方法
fang_ge = TuDi()
# a.先去子类中去查找该方法,若存在,则直接使用
# b.去第1个父类中查找TuDi(【Master】,School)
# c.去第2个父类中找
# d.object找
print(TuDi.__mro__)
print(TuDi.mro())
fang_ge.make_cake()
fang_ge.programming()

==总结:==

(1)当子类继承父类后,可以给子类添加新的扩展方法;

(2)当要查看子类调用父类方法的顺序时,可以使用子类名.__mro__或()。==A、mro()==;B、self();

这篇关于程序猿大战Python——面向对象——继承基础的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1085980

相关文章

Python的Darts库实现时间序列预测

《Python的Darts库实现时间序列预测》Darts一个集统计、机器学习与深度学习模型于一体的Python时间序列预测库,本文主要介绍了Python的Darts库实现时间序列预测,感兴趣的可以了解... 目录目录一、什么是 Darts?二、安装与基本配置安装 Darts导入基础模块三、时间序列数据结构与

Python正则表达式匹配和替换的操作指南

《Python正则表达式匹配和替换的操作指南》正则表达式是处理文本的强大工具,Python通过re模块提供了完整的正则表达式功能,本文将通过代码示例详细介绍Python中的正则匹配和替换操作,需要的朋... 目录基础语法导入re模块基本元字符常用匹配方法1. re.match() - 从字符串开头匹配2.

Python使用FastAPI实现大文件分片上传与断点续传功能

《Python使用FastAPI实现大文件分片上传与断点续传功能》大文件直传常遇到超时、网络抖动失败、失败后只能重传的问题,分片上传+断点续传可以把大文件拆成若干小块逐个上传,并在中断后从已完成分片继... 目录一、接口设计二、服务端实现(FastAPI)2.1 运行环境2.2 目录结构建议2.3 serv

通过Docker容器部署Python环境的全流程

《通过Docker容器部署Python环境的全流程》在现代化开发流程中,Docker因其轻量化、环境隔离和跨平台一致性的特性,已成为部署Python应用的标准工具,本文将详细演示如何通过Docker容... 目录引言一、docker与python的协同优势二、核心步骤详解三、进阶配置技巧四、生产环境最佳实践

Python一次性将指定版本所有包上传PyPI镜像解决方案

《Python一次性将指定版本所有包上传PyPI镜像解决方案》本文主要介绍了一个安全、完整、可离线部署的解决方案,用于一次性准备指定Python版本的所有包,然后导出到内网环境,感兴趣的小伙伴可以跟随... 目录为什么需要这个方案完整解决方案1. 项目目录结构2. 创建智能下载脚本3. 创建包清单生成脚本4

Python实现Excel批量样式修改器(附完整代码)

《Python实现Excel批量样式修改器(附完整代码)》这篇文章主要为大家详细介绍了如何使用Python实现一个Excel批量样式修改器,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一... 目录前言功能特性核心功能界面特性系统要求安装说明使用指南基本操作流程高级功能技术实现核心技术栈关键函

python获取指定名字的程序的文件路径的两种方法

《python获取指定名字的程序的文件路径的两种方法》本文主要介绍了python获取指定名字的程序的文件路径的两种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 最近在做项目,需要用到给定一个程序名字就可以自动获取到这个程序在Windows系统下的绝对路径,以下

使用Python批量将.ncm格式的音频文件转换为.mp3格式的实战详解

《使用Python批量将.ncm格式的音频文件转换为.mp3格式的实战详解》本文详细介绍了如何使用Python通过ncmdump工具批量将.ncm音频转换为.mp3的步骤,包括安装、配置ffmpeg环... 目录1. 前言2. 安装 ncmdump3. 实现 .ncm 转 .mp34. 执行过程5. 执行结

Python实现批量CSV转Excel的高性能处理方案

《Python实现批量CSV转Excel的高性能处理方案》在日常办公中,我们经常需要将CSV格式的数据转换为Excel文件,本文将介绍一个基于Python的高性能解决方案,感兴趣的小伙伴可以跟随小编一... 目录一、场景需求二、技术方案三、核心代码四、批量处理方案五、性能优化六、使用示例完整代码七、小结一、

Python中 try / except / else / finally 异常处理方法详解

《Python中try/except/else/finally异常处理方法详解》:本文主要介绍Python中try/except/else/finally异常处理方法的相关资料,涵... 目录1. 基本结构2. 各部分的作用tryexceptelsefinally3. 执行流程总结4. 常见用法(1)多个e