论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
ToB企服应用市场:ToB评测及商务社交产业平台
»
论坛
›
软件与程序人生
›
后端开发
›
Java
›
全网最适合入门的面向对象编程教程:21 类和对象的 Pyth ...
全网最适合入门的面向对象编程教程:21 类和对象的 Python 实现-多文件的组 ...
种地
金牌会员
|
2024-7-19 10:11:49
|
显示全部楼层
|
阅读模式
楼主
主题
932
|
帖子
932
|
积分
2796
全网最适合入门的面向对象编程教程:21 类和对象的 Python 实现-多文件的构造:模块 module 和包 package
择要:
本文主要先容了在使用 Python 面向对象编程时,如何实现多文件的构造,先容了模块和包的定义及使用优点,同时讲解了如何在包中导入模块或类。
原文链接:
FreakStudio的博客
往期保举:
学嵌入式的你,还不会面向对象??!
全网最适合入门的面向对象编程教程:00 面向对象设计方法导论
全网最适合入门的面向对象编程教程:01 面向对象编程的基本概念
全网最适合入门的面向对象编程教程:02 类和对象的 Python 实现-使用 Python 创建类
全网最适合入门的面向对象编程教程:03 类和对象的 Python 实现-为自定义类添加属性
全网最适合入门的面向对象编程教程:04 类和对象的Python实现-为自定义类添加方法
全网最适合入门的面向对象编程教程:05 类和对象的Python实现-PyCharm代码标签
全网最适合入门的面向对象编程教程:06 类和对象的Python实现-自定义类的数据封装
全网最适合入门的面向对象编程教程:07 类和对象的Python实现-类型注解
全网最适合入门的面向对象编程教程:08 类和对象的Python实现-@property装饰器
全网最适合入门的面向对象编程教程:09 类和对象的Python实现-类之间的关系
全网最适合入门的面向对象编程教程:10 类和对象的Python实现-类的继续和里氏替换原则
全网最适合入门的面向对象编程教程:11 类和对象的Python实现-子类调用父类方法
全网最适合入门的面向对象编程教程:12 类和对象的Python实现-Python使用logging模块输出程序运行日记
全网最适合入门的面向对象编程教程:13 类和对象的Python实现-可视化阅读代码神器Sourcetrail的安装使用
全网最适合入门的面向对象编程教程:全网最适合入门的面向对象编程教程:14 类和对象的Python实现-类的静态方法和类方法
全网最适合入门的面向对象编程教程:15 类和对象的 Python 实现-__slots__魔法方法
全网最适合入门的面向对象编程教程:16 类和对象的Python实现-多态、方法重写与开闭原则
全网最适合入门的面向对象编程教程:17 类和对象的Python实现-鸭子类型与“file-like object“
全网最适合入门的面向对象编程教程:18 类和对象的Python实现-多重继续与PyQtGraph串口数据绘制曲线图
全网最适合入门的面向对象编程教程:19 类和对象的 Python 实现-使用 PyCharm 主动生成文件解释和函数解释
全网最适合入门的面向对象编程教程:20 类和对象的Python实现-组合关系的实现与CSV文件生存
更多精彩内容可看:
给你的 Python 加加速:一文速通 Python 并行计算
一文搞懂 CM3 单片机调试原理
肝了半个月,嵌入式技术栈大汇总出炉
电子计算机类比赛的“武林秘籍”
一个MicroPython的开源项目集锦:awesome-micropython,包含各个方面的Micropython工具库
文档和代码获取:
可访问如下链接进行对文档下载:
https://github.com/leezisheng/Doc
本文档主要先容如何使用 Python 进行面向对象编程,需要读者对 Python 语法和单片机开发具有基本了解。相比其他讲解 Python 面向对象编程的博客或册本而言,本文档更加详细、侧重于嵌入式上位机应用,以上位机和下位机的常见串口数据收发、数据处理、动态图绘制等为应用实例,同时使用 Sourcetrail 代码软件对代码进行可视化阅读便于读者理解。
相关示例代码获取链接如下:
https://github.com/leezisheng/Python-OOP-Demo
正文
现在我们知道了如何创建类和实例化对象,如何使用组合和继续来编写代码,但是应该如何构造它们?对于小程序来说,我们可以把所有的类放到一个文件里,然后在文件最后添加一小段代码,让它们交互起来。然而,随着项目规模的增长,很难从浩繁类中找出我们需要修改的那一个。
这时就需要模块(module),模块就是 Python 文件,仅此而已。我们小程序中的一个文件就是一个模块。两个 Python 文件就是两个模块。如果我们在同一个目录下有两个文件,我们可以从其中一个模块中导入类到另一个模块中使用。
例如,我们正在构建一个串口上位机程序,其各个模块构造很大概如下:
我们可以将差别模块生存到统一文件夹的差别 python 文件中,在创建 main.py 导入并控制差别模块交替运行或交换数据。import 语句用于从模块中导入模块或特定的类、函数。通过将函数、变量、类存储在存储在独立的.py 文件中,可隐藏代码实现的细节,将差别代码块重新构造,与主程序分离,简化主程序的逻辑,进步主程序的可读性。
如下为我们的文件构造:
文件名称
文件形貌
Main.py定义了传感器类和主机类的属性和方法主程序,调用其他模块FileIO.py定义了 FileIOClass 的属性和方法Plot.py定义了 PlotClass 的属性和方法Serial.py定义了 SerialClass 的属性和方法my.log程序日记file.csv生存传感器数据
我们可以在主文件中,通过如下语句导入自定义模块:
_# 引用自定义模块_
from FileIO import FileIOClass
from Plot import PlotClass
from Serial import SerialClass
复制代码
随着项目中模块变得越来越多,我们大概会想要添加另外一层抽象,为模块条理添加某种嵌套的等级。但是我们不能将模块添加到模块中,毕竟一个文件只能容纳一个文件,而模块就只是 Python 文件而已。
但是文件可以存储在目录下,模块也可以。一个包(package)是一个目录下模块的集合。包的名字就是目录的名字。我们只需要在目录下添加一个名为__init__.py 的文件(通常是空文件)就可以告诉 Python 这个目录是一个包。
在包之间导入模块或类的时候要注意语法。在 Python 3 中,有两种导入模块的方法:绝对导入和相对导入:
绝对导入是指定我们想要导入的模块、函数或路径的完整路径。import 语句用点号操纵符(period operator)来区分包和模块。
相对导入基本上是一种寻找与当前模块在位置上有相对关系的类、函数或模块的方式。常用于处理同一个包下的相关模块。
具体使用方法可以点击:
https://zhuanlan.zhihu.com/p/376426708
这里需要注意,所有模块层的代码都会在导入的时候立即执行。开发人员通常会在模块下方增长一些测试代码,为了避免这些测试代码在模块被导入后执行,可以利用__name__属性。
__name__属性是 Python 的一个内置属性,记载了一个字符串:
如果在当前文件,name 是 main;
如果导入的文件,name 是模块名。
当你要导入某个模块,但又不想模块的部分代码被直接执行,那就可以这一部分代码放在以下语句的内部:
# 模块或类
if __name__=='__main__:
# 测试本文件中模块/类的代码
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
使用道具
举报
0 个回复
正序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
发新帖
回复
种地
金牌会员
这个人很懒什么都没写!
楼主热帖
Beta 阶段事后分析
mac下配置Charles,安装证书,连接iOS ...
图的基本术语,邻接矩阵、邻接表表示方 ...
为什么 SQL 语句使用了索引,但却还是 ...
python经典习题(一)
DOS窗口命令和单表简单查询
MySQL实战45讲 10
Archlinux scarlett solo driver insta ...
多线程详解
SAP MM 进口采购业务中供应商多送或者 ...
标签云
存储
挺好的
服务器
快速回复
返回顶部
返回列表