论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
ToB企服应用市场:ToB评测及商务社交产业平台
»
论坛
›
软件与程序人生
›
后端开发
›
Java
›
全网最恰当入门的面向对象编程教程:15 类和对象的 Pyth ...
全网最恰当入门的面向对象编程教程:15 类和对象的 Python 实现-__slots__ ...
光之使者
金牌会员
|
2024-7-12 19:43:55
|
显示全部楼层
|
阅读模式
楼主
主题
872
|
帖子
872
|
积分
2616
全网最恰当入门的面向对象编程教程:15 类和对象的 Python 实现-__slots__邪术方法
摘要:
本文主要先容了 Python 中创建自定义类时差别实例属性生存的基本原理和缺点,先容了__slots__邪术方法的基本定义、作用、适用场景和利用方法。
原文链接:
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实现-类的静态方法和类方法
更多出色内容可看:
给你的 Python 加加速:一文速通 Python 并行计算
一文搞懂 CM3 单片机调试原理
肝了半个月,嵌入式技能栈大汇总出炉
电子计算机类比赛的“武林秘籍”
一个MicroPython的开源项目集锦:awesome-micropython,包含各个方面的Micropython工具库
文档和代码获取:
可访问如下链接进行对文档下载:
https://github.com/leezisheng/Doc
本文档主要先容怎样利用 Python 进行面向对象编程,需要读者对 Python 语法和单片机开辟具有基本相识。相比其他解说 Python 面向对象编程的博客或册本而言,本文档更加详细、侧重于嵌入式上位机应用,以上位机和下位机的常见串口数据收发、数据处理、动态图绘制等为应用实例,同时利用 Sourcetrail 代码软件对代码进行可视化阅读便于读者理解。
相关示例代码获取链接如下:
https://github.com/leezisheng/Python-OOP-Demo
正文
在 Python 中,每个类都有实例属性。默认环境下 Python ⽤⼀个字典(__dict__属性)来生存⼀个对象的实例属性。这⾮常有⽤,因为它允许我们在运⾏时去设置任意的新属性。然而,对于有着已知属性的⼩类来说,它可能是个瓶颈。这个字典浪费了许多内存。Python 不能在对象创建时直接分配多个固定量的内存来生存所有的属性。因此如果你创建许多对象(我指的是成千上万个),它会消耗掉许多内存。
不过还是有一个方法来规避这个问题。这个方法需要利用__slots__来告诉 Python 不要利用字典,而且只给一个固定集合的属性分配空间。同时__slots__可以限制实例的属性,使得我们可以限定某些类只能添加特定属性。
众所周知,Python 是一门动态语言。通常,动态语言允许我们在程序运行时给对象绑定新的属性或方法,固然也可以对已经绑定的属性和方法进行解绑定。但是
如果我们需要限定自定义类型的对象只能绑定某些属性,可以通过在类中定义 slots 变量来进行限定。
需要注意的是 slots 的限定只对当前类的对象生效,对子类并不起任何作用。
class SerialClass:
# 限定SerialClass对象只能绑定以下属性
__slots__ = ('dev','_SerialClass__devstate')
复制代码
利用__slots__之后,Python 内部将不再为实例创建一个字典来维护,而是会利用一个固定大小的数组,这样就节省了大量的空间。通过牺牲了一定的灵活性,保证了性能,这也是__slots__这个关键字设计的初衷。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
光之使者
金牌会员
这个人很懒什么都没写!
楼主热帖
〖Python接口自动化测试实战篇⑥〗- 接 ...
100 行代码搞定了 RPC 原理,大家随便 ...
HarmonyOS之分布式软总线
Python3,2行代码,多种方法,直接把网 ...
Python每日一练——第5天:闰年问题升 ...
PyTorch nn.RNN 参数全解析
[SWPUCTF 2021 新生赛]PseudoProtocols ...
c++ 存储区
【Linux篇】第十八篇——网络套接字编 ...
KeePass敏感信息明文传输漏洞复现 (CV ...
标签云
存储
挺好的
服务器
快速回复
返回顶部
返回列表