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中3种内建数据结构:列表、元组和字典
Nov 30 Python
介绍Python中内置的itertools模块
Apr 29 Python
Python3实现从文件中读取指定行的方法
May 22 Python
Unicode和Python的中文处理
Mar 19 Python
获取python文件扩展名和文件名方法
Feb 02 Python
Python遍历文件夹 处理json文件的方法
Jan 22 Python
Python多进程fork()函数详解
Feb 22 Python
Python爬虫实现“盗取”微信好友信息的方法分析
Sep 16 Python
python encrypt 实现AES加密的实例详解
Feb 20 Python
Python Excel vlookup函数实现过程解析
Jun 22 Python
Python常用数字处理基本操作汇总
Sep 10 Python
python邮件中附加文字、html、图片、附件实现方法
Jan 04 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文件怎么打开 如何执行php文件
2011/12/21 PHP
PHP编码转换
2012/11/05 PHP
PHP借助phpmailer发送邮件
2015/05/11 PHP
PHP中使用curl伪造IP的简单方法
2015/08/07 PHP
基于PHP常用文件函数和目录函数整理
2017/08/17 PHP
php设计模式之观察者模式实例详解【星际争霸游戏案例】
2020/03/30 PHP
jquery mobile实现拨打电话功能的几种方法
2013/08/05 Javascript
jQuery查询数据返回object和字符串影响原因是什么
2013/08/09 Javascript
avalonjs实现仿微博的图片拖动特效
2015/05/06 Javascript
jQuery.each使用详解
2015/07/07 Javascript
js数组实现权重概率分配
2017/09/12 Javascript
p5.js 毕达哥拉斯树的实现代码
2018/03/23 Javascript
JavaScript求一个数组中重复出现次数最多的元素及其下标位置示例
2018/07/23 Javascript
vue中使用gojs/jointjs的示例代码
2018/08/24 Javascript
JS/HTML5游戏常用算法之路径搜索算法 随机迷宫算法详解【普里姆算法】
2018/12/13 Javascript
小程序实现抽奖动画
2020/04/16 Javascript
[01:11:28]DOTA2-DPC中国联赛定级赛 RNG vs Phoenix BO3第一场 1月8日
2021/03/11 DOTA
[01:10:27]DOTA2-DPC中国联赛正赛 SAG vs XG BO3 第二场 3月5日
2021/03/11 DOTA
用Python编写脚本使IE实现代理上网的教程
2015/04/23 Python
Flask框架模板继承实现方法分析
2019/07/31 Python
Django 删除upload_to文件的步骤
2020/03/30 Python
简单了解python shutil模块原理及使用方法
2020/04/28 Python
Lombok插件安装(IDEA)及配置jar包使用详解
2020/11/04 Python
Python requests HTTP验证登录实现流程
2020/11/05 Python
Web前端页面跳转并取到值
2017/04/24 HTML / CSS
家乐福巴西网上超市:Carrefour巴西
2016/10/31 全球购物
阿迪达斯荷兰官方网站:adidas荷兰
2018/03/16 全球购物
End Clothing美国站:英国男士潮牌商城
2018/04/20 全球购物
马来西亚综合购物网站:Lazada马来西亚
2018/06/05 全球购物
英国汽车零件购物网站:GSF Car Parts
2019/05/23 全球购物
英语道歉信范文
2014/01/09 职场文书
2014年单位法制宣传日活动总结
2014/11/01 职场文书
公司规章制度范本
2015/08/03 职场文书
2016个人廉洁自律承诺书
2016/03/25 职场文书
《悬崖边的树》读后感2篇
2019/12/02 职场文书
GoLang中生成UUID唯一标识的实现
2021/05/08 Golang