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. 直接导入模块后,为什么要使用模块名.类名方法?

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

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

相关文章

免费域名第二弹:手把手教你获取个性化免费域名并托管至Cloudflare

文章目录 📖 介绍 📖🏡 演示环境 🏡📒 免费申请域名的方法 📒📝 注册账号📝 创建免费域名📝 将域名添加到 Cloudflare⚓️ 相关链接 ⚓️📖 介绍 📖 在如今的数字时代,拥有一个个性化的域名已经成为越来越多人的需求。无论是建立个人博客、项目展示,还…

基于springboot的人口老龄化社区服务与管理平台源码数据库

随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。本文介绍了人口老龄化社区服务与管理平台的开发全过程。通过分析人口老龄化社区服务与管理平台方面的不足,创建了一个计算机管理人口老龄化社区服务与管理平台的方案…

鸿蒙开发通信与连接:【@ohos.connectedTag (有源标签)】

有源标签 说明: 本模块首批接口从API version 8开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 导入模块 import connectedTag from ohos.connectedTag;connectedTag.init init(): boolean 初始化有源标签芯片。 需要权限&#…

python-docx 遍历文档

python-docx 遍历文档 遍历段落和表格(顶级)获取段落中的图片参考资料 遍历段落和表格(顶级) 只有业务场景中需要严格按照word文档中段落和表格的顺序遍历时才使用这个方案。 否则直接遍历下面这几个更方便: 段落&…

前端开发之浏览器安全

浏览器安全涉及多方面的威胁与防护,其中XSS(跨站脚本攻击)与CSRF(跨站请求伪造)是最常见的两类安全问题,而中间人攻击与网络劫持也是不容忽视的安全隐患。下面是对这些安全问题的深入分析与防护策略的总结。…

常用损失函数详解:广泛使用的优化约束方法

各类常用损失函数详解:广泛使用的优化约束方法 今天介绍下损失函数,先介绍下我常用的方法SmoothedL1,它是一个平滑的L1 penalty函数,用于处理约束violation。 标准的L1 penalty函数定义为: L 1 ( x ) { 0 , if x ≤ 0 x , if x > 0 …

MySQL经典面试题:谈一谈你对事务的理解

文章目录 📑事务事务的基本概念回滚开启事务的sql语句 事务的基本特性总结一下涉及到的三个问题 ☁️结语 📑事务 事务的基本概念 事务是用来解决一类特定场景的问题的,在有些场景中,完成某个操作,需要多个sql配合完…

解决header加了固定定位以后,原来页面的锚点链接位置不准确的问题

在网页设计中&#xff0c;当头部&#xff08;header&#xff09;使用了固定定位&#xff08;CSS中的position: fixed;&#xff09;&#xff0c;它将脱离文档流并且固定在视口的顶部或指定位置。这可能导致页面上的锚点链接&#xff08;使用<a href"#id">形式&a…

C++语法18 while循环、循环中断break与继续continue

语法阶段已经更新到第18章了&#xff0c;前面的知识你都学会了吗&#xff1f;如果还没有学习前面的知识&#xff0c;请点击&#x1f449;语法专栏进行学习哦&#xff01; 目录 while循环 while 死循环 训练&#xff1a;折纸 解析 参考代码 训练&#xff1a;第几项 解析 …

CPN IDE实现分层效果

Shift键鼠标选中要分层的库所和变迁&#xff01;然后create subpage。 Subpage是这样的&#xff0c;不会像CPN tools里面自动生成IN和OUT库所&#xff0c;但是也能正确运行。 虽然父页面在运行中有标红&#xff1a;"port not defined" 错误通常意味着在模型中有一些连…

【QT5】<重点> QT多线程

文章目录 前言 一、QThread创建多线程 二、QMutex基于互斥量的同步 三、QReadWriteLock线程同步 四、QWaitCondition线程同步 五、QSemaphore基于信号量的同步 前言 本篇记录学习QT多线程的知识&#xff0c;参考视频13.1QThread创建多线程程序_哔哩哔哩。若涉及版权问题…

用于测试高精度恒流源电路

目前音圈马达在测试方面并没有专用的工具&#xff0c;只有常规的驱动芯片,针对这一问题设计一种高精度恒流源电路&#xff0c;能够对音圈马达的行程、线性度、磁滞、斜率等参数进行测试&#xff0c;和对音圈马达进行寿命实验。 系统主要包括微处理器、D/A转换、A/D转换、运放恒…

单元测试很难么?

前言 你可能会用单元测试框架&#xff0c;python的unittest、pytest&#xff0c;Java的Junit、testNG等。 那么你会做单元测试么&#xff01;当然了&#xff0c;这有什么难的&#xff1f; test_demo.py def inc(x): return x 1 def test_answer(): assert inc(3) 4 i…

经验分享,CRC(循环冗余校验)在线计算

这里分享一个好用的在线计算CRC的网站。 网址&#xff1a;http://www.ip33.com/crc.html 截图&#xff1a;

Ubuntu22.04系统安装及配置

文章目录 一、选择“安装” 二、选择“语言” 三、安装器更新 四、键盘布局 五、选择安装类型 六、网络配置 七、代理设置 八、镜像地址 九、磁盘划分 十、设置用户名、主机名、登录密码 十一、升级到Ubuntu Pro 十二、SSH设置 十三、选装软件包 十四、开始安装进…

灰度图像直方图均衡化

文章目录 1.实验目的2.需求3.代码4.实验结果 1.实验目的 了解一种最基本的图像增强技术&#xff0c;本质上是对灰度图像进行灰度变换。 2.需求 对给定图像进行灰度直方图展示&#xff0c;然后均衡化后再次展示 3.代码 import cv2 as cv import numpy as np from matplotli…

git常见错误

refusing to merge unrelated histories 如果git merge合并的时候出现refusing to merge unrelated histories的错误&#xff0c;原因是两个仓库不同而导致的&#xff0c;需要在后面加上--allow-unrelated-histories进行允许合并&#xff0c;即可解决问题。 git push origin …

类注释规范

类注释规范 1.1.1 模板配置 模板路径&#xff1a;File–>settings–>Editor–>File and Code Templates–>Includes–>File Header  N A M E &#xff1a;设置类名&#xff0c;与下面的 {NAME}&#xff1a;设置类名&#xff0c;与下面的 NAME&#xff1a;设…

【TB作品】MSP430G2553,单片机,口袋板, 多路温度巡回检测仪的设计

题7 多路温度巡回检测仪的设计 设计一个多路温度检测仪&#xff0c;共有8个测温点&#xff0c;每个点连续检测8次&#xff0c;以平均值代表该点温度&#xff0c;并轮流在LED显示器上显示。测试检测元件为铂热电阻Pt1000, 温度测量范围为100℃ ——500℃&#xff0c;测量精度为1…

如何做电子骑缝章?

制作电子骑缝章的过程可以依据不同情况和所使用的工具而有所不同&#xff0c;但基本思路是确保印章能够跨过页面接缝&#xff0c;以验证文档的完整性。以下是几种常见的方法&#xff1a; 使用专业电子合同平台 选择平台&#xff1a;首先&#xff0c;确保你使用的电子合同平台…