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中replace方法实例分析
Aug 20 Python
Python中变量交换的例子
Aug 25 Python
Python中threading模块join函数用法实例分析
Jun 04 Python
Python 爬虫模拟登陆知乎
Sep 23 Python
Pandas 数据处理,数据清洗详解
Jul 10 Python
浅谈django orm 优化
Aug 18 Python
通过python爬虫赚钱的方法
Jan 29 Python
python装饰器原理与用法深入详解
Dec 19 Python
Python 实现网课实时监控自动签到、打卡功能
Mar 12 Python
Matplotlib 折线图plot()所有用法详解
Jul 28 Python
Pandas的数据过滤实现
Jan 15 Python
Python中 range | np.arange | np.linspace三者的区别
Mar 22 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 高手之路(二)
2006/10/09 PHP
PHP中判断文件存在使用is_file还是file_exists?
2015/04/03 PHP
Laravel实现自定义错误输出内容的方法
2016/10/10 PHP
JsEasy简介 JsEasy是什么?与下载
2007/03/07 Javascript
javascript学习笔记(七) js函数介绍
2012/06/19 Javascript
Extjs4中Form的使用之本地hiddenfield
2013/11/26 Javascript
js数组去重的常用方法总结
2014/01/24 Javascript
IE下支持文本框和密码框placeholder效果的JQuery插件分享
2015/01/31 Javascript
JavaScript设计模式学习之“类式继承”
2015/03/12 Javascript
jQuery使用hide方法隐藏元素自身用法实例
2015/03/30 Javascript
使用AOP改善javascript代码
2015/05/01 Javascript
js实现Form栏显示全格式时间时钟效果代码
2015/08/19 Javascript
推荐阅读的js快速判断IE浏览器(兼容IE10与IE11)
2015/12/13 Javascript
javascript HTML5 Canvas实现圆盘抽奖功能
2016/04/11 Javascript
全面了解JavaScript对象进阶
2016/07/19 Javascript
利用bootstrapValidator验证UEditor
2016/09/14 Javascript
模板视图和AngularJS之间冲突的解决方法
2016/11/22 Javascript
H5图片压缩与上传实例
2017/04/21 Javascript
微信小程序日历组件calendar详解及实例
2017/06/08 Javascript
vue中如何使用ztree
2018/02/06 Javascript
vue中改变选中当前项的显示隐藏或者状态的实现方法
2018/02/08 Javascript
微信小程序中转义字符的处理方法
2019/03/28 Javascript
scrapyd schedule.json setting 传入多个值问题
2019/08/07 Javascript
js实现车辆管理系统
2020/08/26 Javascript
Vue中computed和watch有哪些区别
2020/12/19 Vue.js
Python文件读取的3种方法及路径转义
2015/06/21 Python
Python解析json之ValueError: Expecting property name enclosed in double quotes: line 1 column 2(char 1)
2017/07/06 Python
Python jieba库用法及实例解析
2019/11/04 Python
浅谈Python中range与Numpy中arange的比较
2020/03/11 Python
PyTorch中Tensor的数据类型和运算的使用
2020/09/03 Python
如何解决python多种版本冲突问题
2020/10/13 Python
python程序实现BTC(比特币)挖矿的完整代码
2021/01/20 Python
详解Python中的Lock和Rlock
2021/01/26 Python
什么是虚拟内存?虚拟内存有什么优势?
2016/02/09 面试题
python基础之匿名函数详解
2021/04/21 Python
Pygame Rect区域位置的使用(图文)
2021/11/17 Python