全网最适合入门的面向对象编程教程:07 类和对象的Python实现-类型注解-提高代码可读性的利器
全网最适合入门的面向对象编程教程:07 类和对象的 Python 实现-类型注解-提高代码可读性的利器
摘要:
本文对类型注解的定义、使用原因进行了基本介绍,同时对使用 typing 模块实现类型提示和类型检查进行了基本讲解,通过使用类型注解可以让开发者更清晰地了解函数和变量的预期类型。
往期推荐:
全网最适合入门的面向对象编程教程:00 面向对象设计方法导论
全网最适合入门的面向对象编程教程:01 面向对象编程的基本概念
全网最适合入门的面向对象编程教程:02 类和对象的 Python 实现-使用 Python 创建类
全网最适合入门的面向对象编程教程:03 类和对象的 Python 实现-为自定义类添加属性
全网最适合入门的面向对象编程教程:04 类和对象的Python实现-为自定义类添加方法
全网最适合入门的面向对象编程教程:05 类和对象的Python实现-PyCharm代码标签
全网最适合入门的面向对象编程教程:06 类和对象的Python实现-自定义类的数据封装
更多精彩内容可看:
给你的 Python 加加速:一文速通 Python 并行计算
一个MicroPython的开源项目集锦:awesome-micropython,包含各个方面的Micropython工具库
文档和代码获取
可访问如下链接进行对文档下载:

本文档主要介绍如何使用 Python 进行面向对象编程,需要读者对 Python 语法和单片机开发具有基本了解。相比其他讲解 Python 面向对象编程的博客或书籍而言,本文档更加详细、侧重于嵌入式上位机应用,以上位机和下位机的常见串口数据收发、数据处理、动态图绘制等为应用实例,同时使用 Sourcetrail 代码软件对代码进行可视化阅读便于读者理解。
相关示例代码获取链接如下:
FreakStudio-一文速通Python面向对象编程-示例代码
正文
众所周知,Python 是一门动态语言,当我们定义一个变量时,其数据类型可随时改变,同样的,当我们定义一个函数或类时,我们无法强制对传入的变量规定其数据类型。而通过类型注解,我们可以实现类型提示和类型检查,让开发者更清晰地了解函数和变量的预期类型。
对于常用 C/C++ 的嵌入式工程师来说,Python 的函数调用可是有些头疼,Python 是动态语言,其显著特点是在声明变量时,你不需要显式声明它的类型。尽管大部分时候你不用纠结类型声明、类型转化等麻烦事,可以用很少的代码完成各种骚操作,但是当你和其他成员协作编程时,你不希望你的函数被传入错误类型的参数而引发不必要的麻烦。
这时,我们可以使用 Python 中的类型注解避免这种问题,其作用就是让你可以明确的声明变量的类型,使代码不再那么的自由(放飞自我)。具体怎么操作可以查看官方文档:

typing 模块为 Python 带来了类型提示和类型检查的能力。它允许开发者在代码中添加类型注解,提高代码的可读性和可维护性。typing 模块中有多种内置的类型别名,比如 List、Tuple、Dict 等,可以用于注解变量和函数的预期类型。我们可以通过 typing 模块对函数参数和返回值进行注解。
在我们的代码中 Serial 类的初始化方法中(类的定义可看上一篇文章),使用类型注解如下:
def __init__(self,
devport:str = "COM17",
devbaudrate:int = 115200,
devbytesize:int = serial.EIGHTBITS,
devparity :str = serial.PARITY_NONE,
devstopbits:int = serial.STOPBITS_ONE):
pass
此时,类型注解能够提供给编辑器进行类型检查的机会,但需要注意,也仅仅起提示的作用,对 Python 程序的运行不会产生任何影响。也就是说,Python 跟以前一样自由,即使你进行了错误的类型赋值,只要不直接引发错误,程序依旧可以运行。
这里,我们使用错误的类型给 devport 赋值,可以看到 Pycharm 进行提示:

那么,如何使得我们对函数进行了错误类型赋值时,程序发出提示并精确定位错误的代码行?这些在之后的异常类中会讲到。

全网最适合入门的面向对象编程教程:07 类和对象的Python实现-类型注解-提高代码可读性的利器的更多相关文章
- Java基础--面向对象编程1(类与对象)
1.类(class)的定义 类是对一组具有相同特征和行为的对象的抽象描述. 在程序中,引入类的概念,就是为了快速生成更多的具有相同特性和行为的事物. 2.对象(object)的定义 对象是类的具体实现 ...
- Python开发基础-Day17面向对象编程介绍、类和对象
面向对象变成介绍 面向过程编程 核心是过程(流水线式思维),过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西.主要应用在一旦完成很少修改的地方,如linux ...
- python基础之面向对象编程介绍、类和对象
面向对象变成介绍 面向过程编程 核心是过程(流水线式思维),过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西.主要应用在一旦完成很少修改的地方,如linux ...
- [Java入门笔记] 面向对象编程基础(二):方法详解
什么是方法? 简介 在上一篇的blog中,我们知道了方法是类中的一个组成部分,是类或对象的行为特征的抽象. 无论是从语法和功能上来看,方法都有点类似与函数.但是,方法与传统的函数还是有着不同之处: 在 ...
- 最适合入门的Laravel中级教程(一)
Laravel 是一个全栈框架: 我们使用 Laravel 开发业务常见有 3 个方向: 前端页面和后端逻辑混合的应用 主要是面向对 SEO 有需求的项目: 比如说新闻资讯博客文章等: 一般在控制器中 ...
- Python:面向对象编程3 定制类(有更新)
Python:面向对象编程3 定制类(有更新) ⚠️本文主要内容为对Data model相关知识点的提取学习记录.(内容来自文档和部分网页教程案例) ⚠️:这个连接指向<流畅的python&g ...
- [.net 面向对象编程基础] (9) 类和类的实例
[.net 面向对象编程基础] (9) 类和类的实例 类 ,顾名思义就是分类.类别的意思.我们要面向对象编程,就需要对不同的事物进行分类.类可以说是.net面向对象的核心. 类:就是具有相同的属性和功 ...
- [.net 面向对象编程基础] (10) 类的成员(字段、属性、方法)
[.net 面向对象编程基础] (10) 类的成员(字段.属性.方法) 前面定义的Person的类,里面的成员包括:字段.属性.方法.事件等,此外,前面说的嵌套类也是类的成员. a.类的成员为分:静态 ...
- Python入门之面向对象编程(一)面向对象概念及优点
概念 谈到面向对象,很多程序员会抛出三个词:封装.继承和多态:或者说抽象.一切都是对象之类的话,然而这会让初学者更加疑惑.下面我想通过一个小例子来说明一下 面向对象一般是和面向过程做对比的,下面是一个 ...
- JavaScript基础入门12 - 面向对象编程
目录 JavaScript 面向对象编程 前言 构造函数创建对象 instanceof constructor 返回值 原型对象 关于对象的属性查找 in hasOwnProperty() JS当中实 ...
随机推荐
- 移动端termux安装kali
1.相关准备一部安卓手机,termux,NVAC,浏览器2.安装kali首先进入kali的官网选择文档找到Android手机上的kali找到NetHunter-Rootless找到kali安装命令:t ...
- .NET使用P/Invoke来实现注册表的增、删、改、查功能
注册表可以用来进行存储一些程序的信息,例如用户的权限.或者某些值等,可以根据个人需要进行存储和删减. 当前注册表主目录: 引用包 Wesky.Net.OpenTools 1.0.5或者以上版本 操作演 ...
- C 语言编程 — 基本数据类型
目录 文章目录 目录 前文列表 数据类型 基本数据类型 整型 浮点型 前文列表 <程序编译流程与 GCC 编译器> <C 语言编程 - 基本语法> 数据类型 数据类型,即数据对 ...
- .NET 中 Channel 类简单使用
Channel 是干什么的 The System.Threading.Channels namespace provides a set of synchronization data structu ...
- 设置MySQL数据库的远程连接权限
解决方案 在服务器上登录数据库,然后执行如下授权SQL语句.该授权SQL语句的含义为root用户可用任何IP地址登录数据库,操作任何数据库中的任何对象. GRANT ALL PRIVILEGES ...
- 彻底搞懂JavaScript原型和原型链
基于原型编程 在面向对象的编程语言中,类和对象的关系是铸模和铸件的关系,对象总是从类创建而来,比如Java中,必须先创建类再基于类实例化对象. 而在基于原型编程的思想中,类并不是必须的,对象都是通过克 ...
- .net Mvc5Webapi接口接收参数为null的一种情况分享
同样的前后端项目,其他接口用post接收自定义对象形式的参数,是能成功接收的.在这个前提下,出现某个接口接收的参数为null或值全是默认值,可能的原因是这样: 前端定义的参数的字段比后台定义的dto对 ...
- 显示锁之ReentrantLock
ReentrantLock显示锁 在Java 1.5之前,协调对共享对象的访问可以使用的机制只有synchronized和volatile两种.Java1.5增加了一种新的机制:ReentrantLo ...
- Jenkins自动化集成
gitlab连接Jenkins 创建token后 , 现在的网页上就会出现一个token: token只出现一次,注意保存 将这个token在Jenkins上配置,现在开始配置Jenkins Jenk ...
- MySQL学习笔记-数据操作语言
SQL-数据操作语言(DML) 数据操作语言,用于对数据库中表的数据记录进行增删改的操作 一.添加数据(insert) 1. 给指定字段添加数据 insert into {表名} ({字段1},{字段 ...