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实现简单QQ单用户机器人的方法
Jul 03 Python
python登录豆瓣并发帖的方法
Jul 08 Python
python字典DICT类型合并详解
Aug 17 Python
ubuntu安装mysql pycharm sublime
Feb 20 Python
pandas 数据实现行间计算的方法
Jun 08 Python
Python中的random.uniform()函数教程与实例解析
Mar 02 Python
使用pyshp包进行shapefile文件修改的例子
Dec 06 Python
浅谈pytorch卷积核大小的设置对全连接神经元的影响
Jan 10 Python
python3 re返回形式总结
Nov 20 Python
PyTorch 如何设置随机数种子使结果可复现
May 12 Python
python热力图实现的完整实例
Jun 25 Python
Sentry的安装、配置、使用教程(Sentry日志手机系统)
Jul 23 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完整的日历类(CLASS)
2006/11/27 PHP
php addslashes 利用递归实现使用反斜线引用字符串
2013/08/05 PHP
Thinkphp中数据按分类嵌套循环实现方法
2014/10/30 PHP
PHP的APC模块实现上传进度条
2015/10/27 PHP
Thinkphp5.0 框架使用模型Model添加、更新、删除数据操作详解
2019/10/11 PHP
php回调函数处理数组操作示例
2020/04/13 PHP
用js做一个小游戏平台 (一)
2009/12/29 Javascript
js鼠标左右键 键盘值小结
2010/06/11 Javascript
解决js正则匹配换行问题实现代码
2012/12/10 Javascript
js跳转页面方法总结
2014/01/29 Javascript
qq悬浮代码(兼容各个浏览器)
2014/01/29 Javascript
JavaScript ParseFloat()方法
2015/12/18 Javascript
jQuery子元素过滤选择器用法示例
2016/09/09 Javascript
ES6中Math对象的部分扩展
2017/02/20 Javascript
VsCode插件整理(小结)
2017/09/14 Javascript
jquery实现楼层滚动效果
2018/01/01 jQuery
vue-cli2.0转3.0之项目搭建的详细步骤
2018/12/11 Javascript
Vue的全局过滤器和私有过滤器的实现
2020/04/20 Javascript
使用vue3重构拼图游戏的实现示例
2021/01/25 Vue.js
详解Python中的序列化与反序列化的使用
2015/06/30 Python
python 字典(dict)按键和值排序
2016/06/28 Python
Python简单获取自身外网IP的方法
2016/09/18 Python
Python实现在线暴力破解邮箱账号密码功能示例【测试可用】
2017/09/06 Python
Python统计纯文本文件中英文单词出现个数的方法总结【测试可用】
2018/07/25 Python
python中的decorator的作用详解
2018/07/26 Python
服务器端jupyter notebook映射到本地浏览器的操作
2020/04/14 Python
浅析HTML5 meta viewport参数
2020/10/28 HTML / CSS
升职自荐信范文
2013/10/05 职场文书
探矿工程师自荐信
2014/01/24 职场文书
寄语是什么意思
2014/04/10 职场文书
2014年信用社工作总结
2014/11/25 职场文书
红色电影观后感
2015/06/18 职场文书
2019朋友新婚祝福语精选
2019/10/10 职场文书
JS代码编译器Monaco使用方法
2021/06/11 Javascript
详细了解MVC+proxy
2021/07/09 Java/Android
springboot用户数据修改的详细实现
2022/04/06 Java/Android