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使用xmlrpc实例讲解
Dec 17 Python
python实现socket端口重定向示例
Feb 10 Python
Python字符串格式化输出方法分析
Apr 13 Python
Python实现的简单读写csv文件操作示例
Jul 12 Python
对python数据切割归并算法的实例讲解
Dec 12 Python
Python实现SQL注入检测插件实例代码
Feb 02 Python
python实现共轭梯度法
Jul 03 Python
PIL图像处理模块paste方法简单使用详解
Jul 17 Python
django 捕获异常和日志系统过程详解
Jul 18 Python
Python单元测试模块doctest的具体使用
Feb 10 Python
去除python中的字符串空格的简单方法
Dec 22 Python
Python爬取科目四考试题库的方法实现
Mar 30 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
咖啡冲泡指南 咖啡有哪些制作方式 单品咖啡 意式咖啡
2021/03/06 冲泡冲煮
Snoopy类使用小例子
2008/04/15 PHP
php foreach 使用&(与运算符)引用赋值要注意的问题
2010/02/16 PHP
PHP排序之二维数组的按照字母排序实现代码
2011/08/13 PHP
php环境套包 dedeampz 伪静态设置示例
2014/03/26 PHP
PHP结合Jquery和ajax实现瀑布流特效
2016/01/07 PHP
PHP实现的线索二叉树及二叉树遍历方法详解
2016/04/25 PHP
Laravel5.1框架路由分组用法实例分析
2020/01/04 PHP
开发跨浏览器javascript常见注意事项
2009/01/01 Javascript
js 异步处理进度条
2010/04/01 Javascript
用js获取电脑信息(是使用与IE浏览器)
2013/01/15 Javascript
利用JS判断鼠标移入元素的方向
2016/12/11 Javascript
理解javascript中的Function.prototype.bind的方法
2017/02/03 Javascript
vue组件中的样式属性scoped实例详解
2018/10/30 Javascript
js实现登录时记住密码的方法分析
2020/04/05 Javascript
Vue $emit()不能触发父组件方法的原因及解决
2020/07/28 Javascript
JavaScript函数柯里化实现原理及过程
2020/12/02 Javascript
Python求两个list的差集、交集与并集的方法
2014/11/01 Python
Python监控主机是否存活并以邮件报警
2015/09/22 Python
python中redis的安装和使用
2016/12/04 Python
对python中的six.moves模块的下载函数urlretrieve详解
2018/12/19 Python
python里运用私有属性和方法总结
2019/07/08 Python
Python filter过滤器原理及实例应用
2020/08/18 Python
澳大利亚领先的运动鞋商店:Hype DC
2018/03/31 全球购物
美国最大的在线寄售和旧货店:Swap.com
2018/08/27 全球购物
Aquatalia官网:意大利著名鞋履品牌
2019/09/26 全球购物
车间统计员岗位职责
2014/01/05 职场文书
优秀求职信范文分享
2014/01/26 职场文书
2014年消防工作实施方案
2014/02/20 职场文书
2014年学校党建工作总结
2014/11/11 职场文书
黄石寨导游词
2015/02/05 职场文书
运动会通讯稿50字
2015/07/20 职场文书
2016年社区中秋节活动总结
2016/04/05 职场文书
Redis5之后版本的高可用集群搭建的实现
2021/04/27 Redis
一级电子管军用接收机测评
2022/04/05 无线电
基于Apache Hudi在Google云构建数据湖平台的思路详解
2022/04/07 Servers