python中__slots__节约内存的具体做法


Posted in Python onJuly 04, 2021

说明

1、利用_slots__类属性,可以将实例属性存储在元zu中,大大节省了存储空间。

2、所有属性都必须定义为__slots__元组,子类还必须定义__slots__。

实例如果支持弱引用,需要在__weakref中添加__slots__。

实例

class Vector2d:
    __slots__ = ('__x', '__y')
 
    typecode = 'd'

知识点扩展:

__slots__

​ 如果在一个类中定义了__slots__属性,那么这个类的实例将不会拥有__dict__属性,没有__dict__的实例也就不能添加实例属性了。简单来说,__slots__的作用就是阻止类在实例化时为实例分配__dict__属性,限制该实例能添加的属性。

作用

​ 通常情况下实例使用__dict__来存储自己的属性,它允许实例动态地添加或删除属性。然而,对一些在编译期就已经知道有什么变量的类或者不允许动态添加变量的类来说,它们并不需要动态地添加变量。如果想要限制实例属性,不想让它动态添加属性怎么办?比如我们只允许对A的实例添加name和age属性。

​ 为了达到上述目的,Python允许在定义class的时候,定义一个__slots__变量,来限制该class的实例能添加的属性。

class A(object):
  __slots__ = ('age','name')
a = A()
a.name = 'xiaoming'
a.age = 10
a.id = 123456 #error  AttributeError: 'A' object has no attribute 'id'

由于id不在__slots__中,所以实例不能添加id属性。任何试图给实例添加一个其名不在__slots__中的属性都将触发AttributeError异常。

以上就是python中__slots__节约内存的具体做法的详细内容,更多关于python中__slots__如何节约内存的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
Python格式化压缩后的JS文件的方法
Mar 05 Python
python实现发送和获取手机短信验证码
Jan 15 Python
Windows下Python使用Pandas模块操作Excel文件的教程
May 31 Python
Python找出list中最常出现元素的方法
Jun 14 Python
python数据处理实战(必看篇)
Jun 11 Python
Python List cmp()知识点总结
Feb 18 Python
Keras官方中文文档:性能评估Metrices详解
Jun 15 Python
python属于软件吗
Jun 18 Python
用pandas划分数据集实现训练集和测试集
Jul 20 Python
Python+Opencv实现把图片、视频互转的示例
Dec 17 Python
python des,aes,rsa加解密的实现
Jan 16 Python
python实现控制台输出颜色
Mar 02 Python
python中Matplotlib绘制直线的实例代码
Jul 04 #Python
C站最全Python标准库总结,你想要的都在这里
Python实现列表拼接和去重的三种方式
Jul 02 #Python
简单且有用的Python数据分析和机器学习代码
Jul 02 #Python
python常见的占位符总结及用法
Jul 02 #Python
Python合并pdf文件的工具
python实现剪贴板的操作
You might like
php discuz 主题表和回帖表的设计
2009/03/13 PHP
PHP类的使用 实例代码讲解
2009/12/28 PHP
PHP集成百度Ueditor 1.4.3
2014/11/23 PHP
php curl 获取https请求的2种方法
2015/04/27 PHP
PHP7 标准库修改
2021/03/09 PHP
javascript 特性检测并非浏览器检测
2010/01/15 Javascript
深入分析js中的constructor和prototype
2012/04/07 Javascript
详解JavaScript中Hash Map映射结构的实现
2016/05/21 Javascript
浅谈JavaScript中promise的使用
2017/01/11 Javascript
JS实现的简单拖拽功能示例
2017/03/13 Javascript
微信小程序 中wx.chooseAddress(OBJECT)实例详解
2017/03/31 Javascript
Vuejs中使用markdown服务器端渲染的示例
2017/11/22 Javascript
js使用formData实现批量上传
2020/03/27 Javascript
刷新页面后让控制台的js代码继续执行
2019/09/20 Javascript
vue elementui tree 任意级别拖拽功能代码
2020/08/31 Javascript
[02:07]DOTA2超级联赛专访BBC:难忘网吧超神经历
2013/06/09 DOTA
[55:44]完美世界DOTA2联赛决赛 FTD vs Phoenix 第二场 11.08
2020/11/11 DOTA
打开电脑上的QQ的python代码
2013/02/10 Python
详解Python中heapq模块的用法
2016/06/28 Python
浅析Python的web.py框架中url的设定方法
2016/07/11 Python
用Pygal绘制直方图代码示例
2017/12/07 Python
python调用tcpdump抓包过滤的方法
2018/07/18 Python
python制作英语翻译小工具代码实例
2019/09/09 Python
使用python的pyplot绘制函数实例
2020/02/13 Python
django model object序列化实例
2020/03/13 Python
好药师网上药店:安全合法的网上药品零售药房
2017/02/15 全球购物
Java 中访问数据库的步骤?Statement 和PreparedStatement 之间的区别?
2012/06/05 面试题
农民工创业典型事迹
2014/01/25 职场文书
花店创业计划书范文
2014/02/07 职场文书
保护环境建议书100字
2014/05/13 职场文书
母亲节主题班会
2015/08/14 职场文书
奖学金申请个人主要事迹材料
2015/11/04 职场文书
python利用while求100内的整数和方式
2021/11/07 Python
MYSQL 运算符总结
2021/11/11 MySQL
Go gRPC进阶教程gRPC转换HTTP
2022/06/16 Golang
React如何使用axios请求数据并把数据渲染到组件
2022/08/05 Javascript