全网最适合入门的面向对象编程教程:14 类和对象的 Python 实现-类的静态方 ...

打印 上一主题 下一主题

主题 880|帖子 880|积分 2640

全网最适合入门的面向对象编程教程:14 类和对象的 Python 实现-类的静态方法和类方法,你分得清吗?

择要:

本文重要先容了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的安装使用
更多出色内容可看:

给你的 Python 加加速:一文速通 Python 并行计算
一文搞懂 CM3 单片机调试原理
肝了半个月,嵌入式技术栈大汇总出炉
电子计算机类比赛的“武林秘籍”
一个MicroPython的开源项目集锦:awesome-micropython,包罗各个方面的Micropython工具库
文档和代码获取:

可访问如下链接举行对文档下载:
https://github.com/leezisheng/Doc

本文档重要先容如何使用 Python 举行面向对象编程,需要读者对 Python 语法和单片机开发具有根本了解。相比其他解说 Python 面向对象编程的博客或书籍而言,本文档更加详细、侧重于嵌入式上位机应用,以上位机和下位机的常见串口数据收发、数据处置惩罚、动态图绘制等为应用实例,同时使用 Sourcetrail 代码软件对代码举行可视化阅读便于读者理解。
相关示例代码获取链接如下:https://github.com/leezisheng/Python-OOP-Demo
正文

静态方法

以 SensorClass 类为例,所谓 InitSensor、StartSensor、StopSensor 等在类中定义的方法都是对象方法,也就是说这些方法都是发送给对象的消息,都调用了对象中的属性。实际上,我们写在类中的方法并不需要都是对象方法,类中有一些方法不需要调用对象属性,就好比在 InitSensor 方法中我们可能需要判断当前 COM 口是否存在,很显然这个方法与传感器对象无关。
又好比,我们定义一个“三角形”类,通过传入三条边长来构造三角形,并提供计算周长和面积的方法,但是传入的三条边长未必能构造出三角形对象,因此我们可以先写一个方法来验证三条边长是否可以构成三角形,这个方法很显然就不是对象方法,由于在调用这个方法时三角形对象尚未创建出来(由于都不知道三条边能不能构成三角形),所以这个方法是属于三角形类而并不属于三角形对象的。我们可以使用静态方法来解决这类问题,代码如下所示。
[code]@staticmethod    _# 判断传感器ID号是否正确:这里判断ID号是否在0到99之间_    def IsTrueID(id:int = 0):        if id >= 0 and id

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

天空闲话

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表