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

news2024/10/6 0:32:25

前言

这篇文章属于类知识的最后一篇,带一点点其他知识,学习内容来自于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. 直接导入模块后,为什么要使用模块名.类名方法?

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

matlab线性多部法求常微分方程数值解

用Adamas内差二步方法,内差三步方法,外差二步方法,外差三步方法这四种方法计算。 中k为1和2. k为2和3 代码 function chap1_adams_methodu0 1; T 2; h 0.1; N T/h; t 0:h:T; solu exact1(t);f f1; u_inter_2s adams_inter_2steps(…

【C++高阶】高效搜索的秘密:深入解析搜索二叉树

📝个人主页🌹:Eternity._ ⏩收录专栏⏪:C “ 登神长阶 ” 🤡往期回顾🤡:C多态 🌹🌹期待您的关注 🌹🌹 ❀二叉搜索树 📒1. 二叉搜索树&…

项目训练营第二天

项目训练营第二天 用户登录逻辑 1、账户名不少于4位 2、密码不少于8位 3、数据库表中能够查询到账户、密码 4、密码查询时用同样加密脱敏处理手段处理后再和数据库中取出字段进行对比,如果账户名未查询到,直接返回null 5、后端设置相应的脱敏后用户的s…

如何使用alias永久别名(linux篇)

一、alias的使用 alias主要作用是起一个别名的用处 它又分两种形式: ① 临时别名 ② 永久别名 1.第一种(临时别名): C:\Users\62452>ssh root192.168.0.102 root192.168.0.102s password: Last login: Sat Jun 15 16:30:12 20…

18张Python数据科学速查表.png

数据科学已经发展成为一个庞大的系统,包含数学、统计学、概率论、计算机、数据库、编程等各种理论技术。 目前在主流的数据科学领域一般有三大生态,一是以sas、matlab、spss等为代表的商业软件生态,二是围绕R语言建立起来的开源生态&#xf…

移动硬盘在苹果电脑上无法识别的诊断与恢复策略

一、问题描述 在数字时代,移动硬盘已成为我们存储和传输数据的重要工具。然而,当我们将移动硬盘插入苹果电脑时,有时会遇到无法识别的情况,这让我们感到十分困扰。本文将详细探讨移动硬盘插苹果电脑后读不出来的现象,…

GIT----使用技巧之保存现场回退新建分支继续开发

GIT----使用技巧之保存现场回退新建分支继续开发 前言: 故事是这样的,有一个比较复杂的项目使用的是STM32F103VCT6(资源flash-256k,RAM-48k),开发到一半发现RAM不够用了,换容量更大的芯片STM32F103VGT6(资源…

Elasticsearch安装(windows)

先给出网址 elasticsearch:Download Elasticsearch | Elastic elasticKibana:Download Kibana Free | Get Started Now | Elastic Logstash:Download Logstash Free | Get Started Now | Elastic ik分词:Releases infinilabs/…

经验分享,16进制与字符串的互相转换网站

分享一个16进制与字符串的互相转换的网站,比较实用。 网址: https://www.bejson.com/convert/ox2str/ 截图:

pytorch自定义扩展

一 torch.nn.Module和torch.autograd.Function pytorch的自定义拓展之(一)——torch.nn.Module和torch.autograd.Function_用torch.autograd.function还是nn.module-CSDN博客https://blog.csdn.net/qq_27825451/article/details/95189376

人力资源招聘社会校企类型招聘系统校园招聘小程序

校企社会人力资源招聘小程序:开启高效招聘新时代 🚀开篇:打破传统,开启招聘新篇章 在快速发展的现代社会,人力资源招聘已经成为企业和学校共同关注的重要议题。为了更高效、便捷地满足双方的招聘需求,一款…

创新入门 | 病毒循环Viral Loop是什么?为何能实现指数增长

今天,很多高速增长的成功创业公司都在采用”病毒循环“的策略去快速传播、并扩大用户基础。究竟什么是“病毒循环”?初创公司的创始人为何需要重视这个策略?这篇文章中将会一一解答与病毒循环有关的各种问题。 一、什么是病毒循环&#xff08…

[机器学习算法]决策树

1. 理解决策树的基本概念 决策树是一种监督学习算法,可以用于分类和回归任务。决策树通过一系列规则将数据划分为不同的类别或值。树的每个节点表示一个特征,节点之间的分支表示特征的可能取值,叶节点表示分类或回归结果。 2. 决策树的构建…

SD-WAN组网如何帮助企业降低网络成本?

企业在构建IT网络时,常常面临节省费用和提升效益的挑战。IT开销主要包括设备、网络和维护成本。利用OgCloud的SD-WAN组网方案,企业可以有效地应对这些问题。 企业专线网络的高成本问题 企业专线的费用较高,而且数据不能同时在多条专线上传输。…

matlab编写微分方程椭圆型方程(一维形式)

文章目录 理论编程实例原代码 理论 椭圆型方程一维格式即常微分方程,边值问题,方程如下所示: 截断误差: 当 h → ∞ h\rightarrow\infty h→∞时,截断误差趋于零,离散方程组成立, 写成矩阵&…

就因为没在大屏项目加全屏按钮,早上在地铁挨了领导一顿骂

“嗯嗯”,“嗯嗯”,“那产品也没说加呀”,“按F11不行吗?”,“嗯嗯”,“好的”。 早上在4号线上,我正坐在地铁里,边上站着的妹子,我看他背着双肩包,打着电话…

算法排序之冒泡排序及优化

public class Bubbling {public static void main(String[] args) {// 定义需要排序的数组int[] arr {0,1,21,2,31,12,5,8};// 冒泡排序方法bubbleSort(arr);bubbleOptSort(arr);}/*** 冒泡排序* param arr 数组*/public static void bubbleSort(int[] arr){// i0,…

IPFoxy代理IP:IPv4与IPv6性能与安全性对比

在使用IPFoxy静态代理IP的过程中,经常有小白朋友疑惑,IPv4与IPv6有何区别?他们在性能与安全上的差别如何,又该如何选择?在这篇博文中,我们将从各个方面为您科普这一区别,帮助您更好的选择。 一、…

ROS 机器人运动控制

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

【UML用户指南】-19-对基本行为建模-用例图

目录 1、组成结构 2、表示法 3、一般用法 3.1、对主题的语境建模 3.2、对主题的需求建模 4、常用建模技术 4.1、对系统的语境建模 4.1.1、设计过程 4.2、对系统的需求建模 4.2.1、设计过程: 5、正向工程 UML 中的用例图是对系统的动态方面建模的 5 种图之…