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根据经纬度计算距离示例
Feb 16 Python
Python代码的打包与发布详解
Jul 30 Python
Python类定义和类继承详解
May 08 Python
python实现决策树、随机森林的简单原理
Mar 26 Python
python3学习之Splash的安装与实例教程
Jul 09 Python
python Selenium实现付费音乐批量下载的实现方法
Jan 24 Python
Django页面数据的缓存与使用的具体方法
Apr 23 Python
对python中UDP,socket的使用详解
Aug 22 Python
Python多线程爬取豆瓣影评API接口
Oct 22 Python
pygame编写音乐播放器的实现代码示例
Nov 19 Python
python wav模块获取采样率 采样点声道量化位数(实例代码)
Jan 22 Python
python实现经纬度采样的示例代码
Dec 10 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操作Memcache实例介绍
2013/06/14 PHP
php生成缩略图示例代码分享(使用gd库实现)
2014/01/20 PHP
Win7下手动安装apache2.2、php5.4笔记
2015/04/03 PHP
变量在 PHP7 内部的实现(二)
2015/12/21 PHP
php图片上传类 附调用方法
2016/05/15 PHP
tp5(thinkPHP5框架)时间查询操作实例分析
2019/05/29 PHP
JavaScript更改class和id的方法
2008/10/10 Javascript
UpdatePanel和Jquery冲突的解决方法
2013/04/01 Javascript
php中给js数组赋值方法
2014/03/10 Javascript
jquery实现点击文字可编辑并修改保存至数据库
2014/04/15 Javascript
node.js中的emitter.emit方法使用说明
2014/12/10 Javascript
省市选择的简单实现(基于zepto.js)
2016/06/21 Javascript
AngularJS入门教程之ng-checked 指令详解
2016/08/01 Javascript
详解Vue生命周期的示例
2017/03/10 Javascript
js判断PC端与移动端跳转
2020/12/24 Javascript
VUE2 前端实现 静态二级省市联动选择select的示例
2018/02/09 Javascript
解决vue中使用Axios调用接口时出现的ie数据处理问题
2018/08/13 Javascript
使用JavaScript破解web
2018/09/28 Javascript
JavaScript字符串处理常见操作方法小结
2019/11/15 Javascript
深入理解python中函数传递参数是值传递还是引用传递
2017/11/07 Python
详解tensorflow载入数据的三种方式
2018/04/24 Python
对dataframe数据之间求补集的实例详解
2019/01/30 Python
python,Django实现的淘宝客登录功能示例
2019/06/12 Python
python实现切割url得到域名、协议、主机名等各个字段的例子
2019/07/25 Python
python求加权平均值的实例(附纯python写法)
2019/08/22 Python
使用Python将字符串转换为格式化的日期时间字符串
2019/09/01 Python
利用Python小工具实现3秒钟将视频转换为音频
2019/10/29 Python
pytorch中nn.Conv1d的用法详解
2019/12/31 Python
jupyter notebook 重装教程
2020/04/16 Python
pycharm配置安装autopep8自动规范代码的实现
2021/03/02 Python
css3绘制百度的小度熊
2018/10/29 HTML / CSS
个人作风剖析材料
2014/02/02 职场文书
幼儿园教师教育感言
2014/02/28 职场文书
学生会宣传部部长竞选演讲稿
2014/04/25 职场文书
开除员工通知
2015/04/22 职场文书
详解PyTorch模型保存与加载
2022/04/28 Python