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实现115网盘自动下载的方法
Sep 30 Python
python实现八大排序算法(1)
Sep 14 Python
matplotlib在python上绘制3D散点图实例详解
Dec 09 Python
使用django实现一个代码发布系统
Jul 18 Python
对django的User模型和四种扩展/重写方法小结
Aug 17 Python
python中的数组赋值与拷贝的区别详解
Nov 26 Python
python可视化text()函数使用详解
Feb 11 Python
Python字符串函数strip()原理及用法详解
Jul 23 Python
python selenium 获取接口数据的实现
Dec 07 Python
python模块内置属性概念及实例
Feb 18 Python
Python中使用Lambda函数的5种用法
Apr 01 Python
Django使用channels + websocket打造在线聊天室
May 20 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
thinkPHP导出csv文件及用表格输出excel的方法
2015/12/30 PHP
Laravel学习教程之路由模块
2017/08/18 PHP
gearman中worker常驻后台,导致MySQL server has gone away的解决方法
2020/02/27 PHP
PHP语言对接抖音快手小红书视频/图片去水印API接口源码
2020/08/11 PHP
如何制作浮动广告 JavaScript制作浮动广告代码
2012/12/30 Javascript
JavaScript将数据转换成整数的方法
2014/01/04 Javascript
JavaScript基本语法学习教程
2016/01/14 Javascript
用NODE.JS中的流编写工具是要注意的事项
2016/03/01 Javascript
JavaScript数组操作详解
2017/02/04 Javascript
JS实现新建文件夹功能
2017/06/17 Javascript
详解js的作用域、预解析机制
2018/02/05 Javascript
js正则表达式校验指定字符串的方法
2018/07/23 Javascript
node.js实现上传文件功能
2019/07/15 Javascript
Layui点击图片弹框预览的实现方法
2019/09/16 Javascript
对Python中的@classmethod用法详解
2018/04/21 Python
用Django写天气预报查询网站
2018/10/21 Python
python输出带颜色字体实例方法
2019/09/01 Python
django rest framework serializers序列化实例
2020/05/13 Python
pytorch实现查看当前学习率
2020/06/24 Python
python 图像插值 最近邻、双线性、双三次实例
2020/07/05 Python
Python之字典添加元素的几种方法
2020/09/30 Python
css3动画过渡实现鼠标跟随导航效果
2018/02/08 HTML / CSS
HTML5+CSS3实现无插件拖拽上传图片(支持预览与批量)
2017/01/05 HTML / CSS
canvas三角函数模拟水波效果的示例代码
2018/07/03 HTML / CSS
Too Faced官网:美国知名彩妆品牌
2017/03/07 全球购物
Joules美国官网:出色的英国风格
2017/10/30 全球购物
27个经典Linux面试题及答案,你知道几个?
2014/03/11 面试题
高校生生产实习自我鉴定
2013/09/21 职场文书
经典优秀毕业生求职信范文分享
2013/12/18 职场文书
试用期员工考核制度
2014/01/22 职场文书
优秀企业获奖感言
2014/02/01 职场文书
服装设计专业求职信
2014/06/16 职场文书
委托函范文
2015/01/29 职场文书
学术会议邀请函
2015/01/30 职场文书
大一学生个人总结
2015/02/15 职场文书
python中pycryto实现数据加密
2022/04/29 Python