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常见文件操作的函数示例代码
Nov 15 Python
Python自定义主从分布式架构实例分析
Sep 19 Python
详解Golang 与python中的字符串反转
Jul 21 Python
python 列表降维的实例讲解
Jun 28 Python
对Python 数组的切片操作详解
Jul 02 Python
对Python 窗体(tkinter)文本编辑器(Text)详解
Oct 11 Python
Python 互换字典的键值对实例
Feb 12 Python
python如何实现单链表的反转
Feb 10 Python
python中for in的用法详解
Apr 17 Python
解决TensorFlow程序无限制占用GPU的方法
Jun 30 Python
python 实现图片裁剪小工具
Feb 02 Python
Python自动化实战之接口请求的实现
May 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
不用mod_rewrite直接用php实现伪静态化页面代码
2008/10/04 PHP
php购物网站支付paypal使用方法
2010/11/28 PHP
PHP和Mysqlweb应用开发核心技术 第1部分 Php基础-3 代码组织和重用2
2011/07/03 PHP
CI框架中$this->load->library()用法分析
2016/05/18 PHP
PHP获取HTTP body内容的方法
2018/12/31 PHP
cssQuery()的下载与使用方法
2007/01/12 Javascript
jquery实现省市select下拉框的替换(示例代码)
2014/02/22 Javascript
关于javascript模块加载技术的一些思考
2014/11/28 Javascript
Bootstrap3 input输入框插入glyphicon图标的方法
2016/05/16 Javascript
理解 javascript 中的函数表达式与函数声明
2017/07/07 Javascript
JS+canvas动态绘制饼图的方法示例
2017/09/12 Javascript
在微信小程序中渲染HTML内容的方法示例
2018/09/28 Javascript
react高阶组件添加和删除props
2019/04/26 Javascript
vue-cli3 引入 font-awesome的操作
2020/08/11 Javascript
JavaScript实现简单验证码
2020/08/24 Javascript
vue data有值,但是页面{{}} 取不到值的解决
2020/11/09 Javascript
Python标准异常和异常处理详解
2015/02/02 Python
利用Python对文件夹下图片数据进行批量改名的代码实例
2019/02/21 Python
Pycharm保存不能自动同步到远程服务器的解决方法
2019/06/27 Python
Python实现的微信红包提醒功能示例
2019/08/22 Python
PyCharm永久激活方式(推荐)
2020/09/22 Python
浅谈selenium如何应对网页内容需要鼠标滚动加载的问题
2020/03/14 Python
浅谈keras中loss与val_loss的关系
2020/06/22 Python
python实现粒子群算法
2020/10/15 Python
适合各种场合的美食礼品:Harry & David
2016/08/03 全球购物
天猫国际进口超市直营:官方直采,一站购齐
2017/12/11 全球购物
巴西Bo.Bô官方在线商店:经营奢侈品时尚业务
2020/03/16 全球购物
在Ajax应用中信息是如何在浏览器和服务器之间传递的
2016/05/31 面试题
寄语十八大感言
2014/02/07 职场文书
优秀少先队辅导员先进事迹材料
2014/05/18 职场文书
公共场所标语
2014/06/30 职场文书
刑事辩护授权委托书格式
2014/10/13 职场文书
电工实训报告总结
2014/11/05 职场文书
毕业论文致谢信
2015/05/14 职场文书
紫日观后感
2015/06/05 职场文书
银行客户经理培训心得体会
2016/01/09 职场文书