Python学习笔记14:进阶篇(三)。类的终结篇,类的导入和模块的导入。

前言

这篇文章属于类知识的最后一篇,带一点点其他知识,学习内容来自于Python crash course。
关注我私信发送Python crash course,分享一份中文版PDF。

类的导入

在学习的时候,包括之前,我都是在一个文件中把所有代码都写上去,包括定义不同的类,定义函数,实例化类等等都写一起。
实际上,将过多的代码堆积在一个类上,是非常不友好的编程习惯。我们应该合理的整理归纳我们定义的类以及实现功能的代码,方便维护方便使用。
当类文件都不是同一个的时候,我们怎么使用别的文件的类呢?答案是使用导入。之前学习库的知识的时候了解到,我们可以导入别人的库来实现自己功能。那么类,是不是同样也可以导入。
很显然,可以。

模块

什么是模块

模块是组织Python代码的方式之一,它是一种将相关的函数、类和变量等封装在一个文件中的结构。模块文件以.py作为扩展名。
简单理解一下,你创建一个.py文件,这就是一个模块。
在这里插入图片描述
这里有两个py文件,相当于两个模块。当然这个模块命名不是很好,只是学习用没有很正式的命名。这两个模块实际上就是昨天的一个类的继承和类的组合的两个模块。

模块的好处

  1. 代码重用:编写一次功能,可以在多个地方通过导入模块来使用,避免重复编写相同的代码。
  2. 提高可维护性:将功能分解到不同的模块中,使得代码结构更清晰,便于管理和维护。
  3. 命名空间管理:每个模块都有自己的命名空间,可以减少全局变量冲突的问题。
  4. 模块化编程:有助于实现复杂系统的分层设计,每个模块负责一部分功能,易于理解和调试。

类的编码风格

导入类的时候,由于库,模块,类可能是同一个英文单词,所以编码的风格规范能够更好的帮助你导入类的语法。这里贴上学习数据中关于编码风格的内容。

类名应采用驼峰命名法 驼 ,即将类名中的每个单词的首字母都大写,而不使用下划线。实例名和模块名都采用小写格式,并在单词之间加上下划线。
对于每个类,都应紧跟在类定义后面包含一个文档字符串。这种文档字符串简要地描述类的功能,并遵循编写函数的文档字符串时采用的格式约定。每个模块也都应包含一个文
档字符串,对其中的类可用于做什么进行描述。
可使用空行来组织代码,但不要滥用。在类中,可使用一个空行来分隔方法;而在模块中,可使用两个空行来分隔类。
需要同时导入标准库中的模块和你编写的模块时,先编写导入标准库模块的import
语句,再添加一个空行,然后编写导入你自己编写的模块的import 语句。在包含多 条import
语句的程序中,这种做法让人更容易明白程序使用的各个模块都来自何方。

编写代码

继续采用car的例子。这次稍微发散一点。现在有一个汽车工厂生产汽车,流水线组装汽车。很明显我们不能把流水线的类和汽车零件的类放到一起。因为我们现在不是初学者,必须学会模块化开发,这两放一个模块明显就不合理。当然,你可以把流水线和汽车的零件这些模块组合成一个汽车库,内部实现组装汽车的功能,然后让别人使用这个库去组装汽车。
这里我们简单的讲在流水线模块调用其他零件模块组装汽车,简单粗暴就一个引擎哈。实现一个优秀的汽车工厂功能,需要用到几种设计模式。Python的设计模式写出来我估计得花挺多时间还要查资料啥的,而且这里重点讲的类的导入,所以就简单意思一下。

首先编写一个Engine模块

  1. 我是先编写完了代码,再开始写文章的,文章实际上我的思路和编写过程。
  2. 这里用的是一个Engine的父类,然后简单写了两个类继承,一个是Electric Engine,一个是Internal Combustion Engine。内容也很简单哈,大家自己写的时候尽量用上之前学的东西,将知识连贯起来。
    在这里插入图片描述

编写一个汽车工厂的模块

  1. 工厂模块编写的也很简单哈,就一个名字,一个模拟函数,实际是打印输出。
  2. 注意看函数的第二个参数和我的输出,先记一下,待会将为什么。
    在这里插入图片描述

编写一个实现的模块

我创建了一个自己的工厂,刚建出来pychram就说建不了,pychram问我你哪里厂你就建。

在这里插入图片描述
这就是我们之前说的情况,我用的类都在其他模块,我怎么才能用上呢?有好几个办法,我们一个个讲。

  1. 导入单个类
    语法: from module_name import class_name
    介绍:来自于某某模块导入某某类。大概就这个释义哈。
    在这里插入图片描述

  2. 导入多个类
    语法: from module_name import class_name_1,class_name_2...
    和单个类的语法类似,用逗号隔开多个即可。
    在这里插入图片描述
    敲重点!!!
    注意看car_factory中的create_car函数,参数明明是engine,为什么这里我使用了两个不是Engine的类,也可以?

    回答:多态。简单的理解就是多种形态。多态的含义大家往前看能看到,我这边不写出来,大家自己看的加深印象。

    多态允许程序中的对象对同一消息作出不同响应,具体响应取决于接收消息的对象的类型。

    在代码中的ElectricEngine和InternalCombustionEngine两个类都是Engine类的子类,而我们在函数中传递的就是Engine。

    ElectricEngine和InternalCombustionEngine这两个是Engine吗?是,是特殊的Engine。

    那是Engine是不是就可以作为create_car函数的参数进行传递了!那么根据Engine在当前函数的状态,就创建出了不同引擎的汽车。

    大家好好理解一下,可以查其他资料,也可以自己写其他例子验证。

  3. 导入所有类
    语法: from module_name import *
    这里的*我个人理解是通配符,表示所有。就想MySQL里面的select *
    在这里插入图片描述
    大家可以看到,我换成*后,还创建出一个普通的Engine汽车。

  4. 导入整个模块
    语法: import module_name
    import后直接就是模块名了,就像之前我们导入库一下。
    在这里插入图片描述
    注意如果我们直接导入模块,那么我们不能直接使用类名创建,而是需要使用模块名.类型的方式指定类。

结尾

这篇文章主要讲Python中类的导入,模块的知识,导入类的多种方式,这篇要学透,因为实际写项目的时候,用的很多,导入自己的类和模块,导入标准库的类和模块,导入第三方库的类的和模块。通过导入现有的库完成项目,能节省很多功夫。
今天的内容就到这里,后面学习文件的操作。

点赞收藏关注不迷路,加油!

作业

  1. 根据自己前一天定义的类,分模块化编写,参考本文利用自己编写的模块实现某些功能。
  2. 直接导入模块后,为什么要使用模块名.类名方法?

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/724400.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

48-2 内网渗透 - 利用Metasploit提权

一、Metasploit提权过程概述 Metasploit是一个开源的安全漏洞检测工具,广泛用于安全和IT专业人士识别、验证和利用安全漏洞,同时也支持专家驱动的安全评估和管理。 提权过程详解 1)生成后门 在Kali Linux上使用msfvenom生成反向连接的后门文件。 # ip 要改成自…

第七节 文本框的默认输入设置

通常我们常见设置一些文本框,默认提示一段信息,在文本框输入值变化值切换实际输入值,那么这时怎么添加情形进行设置呢,请看下面这个案例说明。 第一种,添加文本框不为空,显示为当前输入值 1、添加文本框&…

什么是进程

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 在了解进程之前,我们需要知道多任务的概念。多任务,顾名思义,就是指操作系统能够执行多个任务。例如,…

为什么带上符号位计算,仍然可以算出正负数对应的补码

文章目录 🚀前言🚀 为什么要引入原反补码✈️ 利用加法表示减法✈️ 关于数字在计算机中的存储🚀 数学解释 🚀 为什么带上符号位计算,仍然可以算出正负数对应的补码 🚀前言 为应付期末,速成数电…

ROS 机器人运动控制

ROS 机器人运动控制 机器人运动 当我们拿到一台机器人,其配套的程序源码中,通常会有机器人核心节点,这个核心节点既能够驱动机器人的底层硬件,同时向上还会订阅一个速度话题。我们只需要编写一个新的节点(速度控制节点…

(四十二)Vue之路由及其基本使用Vue Router

文章目录 概念基本使用demo几个注意点 上一篇:(四十一)Vuex之模块化与命名空间 概念 在计算机科学和网络领域中,路由(Routing)是指确定数据包在网络中传输的路径和方式的过程。它涉及到根据源地址和目标地…

杂说咋说-关于城市化发展和城市治理的几点建议(浙江借鉴)

杂说咋说-关于城市化发展和城市治理的几点建议(浙江借鉴) 近年来,浙江省坚持一张蓝图绘到底,推动城市化发展和城市治理不断迈上新台阶,全省城市化水平和城市治理能力牢牢居于全国第一方阵。当前,国内外环境…

DFS(一)

问题一(指数级选择) 从1~n这n个整数中任意选取多个,输出所有可能的选择方案。 首先想一下,在现实世界中,我们要如何解决这个问题。 应该是一个一个枚举,即每个数都可以有两个选择(选/不选)。共有种结果。 想一下,如…

JavaSE 面向对象程序设计高级 方法引用 2024详解

在编程中,方法引用(Method Reference)是一种技术,它让你能够直接引用一个现有的函数或方法,而无需通过对象实例来调用。这种方法在函数式编程和高阶函数中非常有用,因为它提供了简洁的方式来传递函数行为&a…

洛谷 P1726:上白泽慧音 ← Tarjan算法

【题目来源】https://www.luogu.com.cn/problem/P1726【题目描述】 在幻想乡,上白泽慧音是以知识渊博闻名的老师。春雪异变导致人间之里的很多道路都被大雪堵塞,使有的学生不能顺利地到达慧音所在的村庄。因此慧音决定换一个能够聚集最多人数的村庄作为新…

【Java】已解决java.util.concurrent.RejectedExecutionException异常

文章目录 一、问题背景二、可能出错的原因三、错误代码示例四、正确代码示例五、注意事项 已解决java.util.concurrent.RejectedExecutionException异常 一、问题背景 java.util.concurrent.RejectedExecutionException是Java并发编程中常见的一个异常,它通常发生…

前字节员工自爆:我原腾讯一哥们,跳槽去小公司做小领导,就签了竞业,又从小公司离职去了对手公司,结果被发现了,小公司要他赔80万

“世界那么大,我想去看看”,这句曾经火遍网络的辞职宣言,说出了多少职场人心中的渴望。然而,当我们真的迈出跳槽那一步时,才发现,现实远比想象中残酷得多。 最近,一起前字节跳动员工爆料的事件…

每日AI资讯-20240616

1. AI漫画角色一致性大突破 由中山大学和联想团队联合提出AutoStudio,它是一个无需训练的多智能体协同框架。AutoStudio采用基于大语言模型的三个智能体来处理交互,并使用基于扩散模型的Drawer生成高质量图像。实验中,AutoStudio无论是在定量…

使用密钥对登录服务器

目录 1、使用密钥文件登录服务器 2、登录成功画面: 3、如若出现以下状况,则说明密钥文件登录失败 1、使用密钥文件登录服务器 首先需要上传pem文件 2、登录成功画面: 3、如若出现以下状况,则说明密钥文件登录失败 解决方法&…

信息论与大数据安全知识点

文章目录 第一章 绪论大数据概述大数据安全与加密技术 安全存储与访问控制技术访问控制概念早期的四种访问控制模型局限性总结 大数据场景下的访问控制技术 安全检索技术密文检索基础 安全处理技术同态加密 隐私保护技术 第一章 绪论 大数据概述 大数…

总结之Docker(四)——镜像修改非ROOT用户权限后生成新镜像并发布

Docker拉去目标镜像 docker pull redis:6.2.5如果出现拉去过程超时,或者连接失败。 添加镜像加速器,以阿里云为例,阿里云目前推广提供镜像加速器,需要登录。 https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors 生成…

闲置资源共享平台

摘 要 随着共享经济的高速发展以及人们对物品的需求方面也越来也丰富,而且各大高校的大学生们的购买力也越来越强,随之而来的问题就是身边的闲置资源也越来越多,但是也有许多的大学生对物品的要求方面不是很高,也愿意买下经济实惠…

06 PXE高效批量网络装机

1、部署PXE远程安装服务 在大规模的Linux应用环境中(如Web集群、分布式计算等),服务器往往并不配装备光驱设备。 在这种情况下,传统的USB光驱、移动硬盘等安装方法显然已经难以满足需求。 那么如何为数十台服务器裸机快速安装系…

坚持刷题|反转链表

文章目录 题目思考实现1. 迭代方式实现链表翻转2. 递归方式实现链表翻转 Hello,大家好,我是阿月。坚持刷题,老年痴呆追不上我,今天继续链表:反转链表 题目 LCR 024. 反转链表 思考 翻转链表是一个常见的算法问题&a…

小主机折腾记录27

1.买了一个9600k,3根台电 4G 2666 极光A40,一根台电8G2666 极光A40,一根国惠8G2666,一个惠普3热管散热器 测试结果如下 1)三根台电 4G2666 相互兼容,频率2667显示正常,显示为美光颗粒&#xff0…