python中__slots__节约内存的具体做法
作者:小妮浅浅 发布时间:2023-04-10 16:28:34
标签:python,slots,节约内存
说明
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异常。
来源:https://www.py.cn/jishu/jichu/31388.html


猜你喜欢
- SpringBoot体系内推荐使用Thymeleaf作为前端页面模板。jsp还得自己整合一下。1.项目结构对比以前的项目结构,main目录下
- 数据可视化的时候,常常需要将多个子图放在同一个画板上进行比较,python 的matplotlib包下的subplot可以帮助完成子功能。p
- 代码如下:DECLARE @c INT DECLARE @c2 INT SELECT @c = COUNT(1) FROM dbo.Spli
- 我有一个2D(二维) NumPy数组,并希望用255.0替换大于或等于阈值T的所有值。据我所知,最基础的方法是:shape = arr.sh
- 前言分析任何规模的数据的重要性怎么强调都不为过。 我们日常生活的几乎每个部分都是数据驱动的,作为开发人员,在构建任何合理大小的应用程序时,首
- 本文实例讲解了JavaScript实现简单的tab选项卡切换的示例代码,分享给大家供大家参考,具体内容如下效果图:具体代码:<!DOC
- Python 内置的 zipfile 模块可以对文件(夹)进行ZIP格式的压缩和读取操作。要进行相关操作,首先需要实例化一个 ZipFile
- 对于经常需要表格头部不东,而列表可以滚动,多用于数据比较多的情况,方便查看<!DOCTYPE HTML PUBLIC "-/
- 本文实例讲述了ES6正则表达式和字符串正则方法。分享给大家供大家参考,具体如下:RegExp构造函数在ES5中,RegExp构造函数的参数有
- 如何巧用三元表达式一开始我并不喜欢阅读别人的代码,话说程序员最讨厌的事:写代码要写文档、写代码要写注释、别人的代码没有文档、别人的代码没有注
- PyQt5安装之前安装过anaconda,里面是含有pyqt的,在环境里搜索可以看到,但是针对实际开发,并没有全部的qt5工具,所以需要再次
- 1. position:static所有元素的默认定位都是:position:static,这意味着元素没有被定位,而且在文档中出现在它应该
- 本文实例讲述了javascript设置和获取cookie的方法。分享给大家供大家参考,具体如下:1. 设置cookiefunction se
- 用过食行生鲜的同学应该知道,每天可以在食行生鲜签到,签到可以领到 20 积分,在购物时可以抵 2 毛钱。钱虽少,但是积少成多,买菜时可以抵扣
- 本文实例讲述了js传值后台中文出现乱码的解决方法。分享给大家供大家参考,具体如下:在“test.jsp”页面中,需要通过js将值传递到后台,
- 前言:group by函数后取到的是分组中的第一条数据,但是我们有时候需要取出各分组的最新一条,该怎么实现呢?本文提供两种实现方式。一、准备
- 方式一在Python的SQLAlchemy ORM中,您可以使用以下代码动态地更改数据模型类的表名:from sqlalchemy.ext.
- 1.样式的重用性CSS布局的网页最大的特点就是样式的可重用性,利用class选择符重复将某个样式属性多次在网页中使用,以减少不断定义样式属性
- Python编程语言允许在一个循环内嵌套另一个循环。下面将介绍几个例子来说明这一概念。语法在Python中嵌套循环语句的语法如下
- 只能远程协助的方式。我特意做了一个脚本,用电话指导客户在SSMS里执行一下脚本就可以了1.0的数据库跟1.1的数据库的区别是1.1的数据库里