python中__slots__节约内存的具体做法

 更新时间:2021年07月04日 11:32:05   作者:小妮浅浅  
在本篇内容里小编给大家分享的是一篇关于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异常。

以上就是python中__slots__节约内存的具体做法的详细内容,更多关于python中__slots__如何节约内存的资料请关注脚本之家其它相关文章!

相关文章

  • python串口如何读取byte类型数据并访问

    python串口如何读取byte类型数据并访问

    这篇文章主要介绍了python串口如何读取byte类型数据并访问方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-09-09
  • IPython库中的display函数的简介、使用方法、应用案例详细攻略

    IPython库中的display函数的简介、使用方法、应用案例详细攻略

    display 函数可以接受一个或多个参数,每个参数都是一个 Python 对象。它会自动根据对象的类型选择合适的显示方式,并在 Jupyter Notebook 中显示出来,这篇文章主要介绍了IPython库中的display函数的简介、使用方法、应用案例详细攻略,需要的朋友可以参考下
    2023-04-04
  • Python实现单向链表

    Python实现单向链表

    这篇文章主要为大家详细介绍了Python实现单向链表,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-05-05
  • python中map()函数的使用方法示例

    python中map()函数的使用方法示例

    map()是 Python 内置的高阶函数,它接收一个函数 f 和一个 list,并通过把函数 f 依次作用在 list 的每个元素上,得到一个新的 list 并返回。下面这篇文章主要给大家介绍了关于python中map()函数的使用方法,需要的朋友可以参考下
    2017-09-09
  • Python图像运算之图像阈值化处理详解

    Python图像运算之图像阈值化处理详解

    这篇文章将详细讲解图像阈值化处理,涉及阈值化处理、固定阈值化处理和自适应阈值化处理,这是图像边缘检测或图像增强等处理的基础,感兴趣的可以了解一下
    2022-04-04
  • 利用python实现聚类分析K-means算法的详细过程

    利用python实现聚类分析K-means算法的详细过程

    K-means算法是很典型的基于距离的聚类算法,采用距离作为相似性的评价指标,即认为两个对象的距离越近,其相似度就越大,下面通过本文给大家介绍利用python实现聚类分析K-means算法的详细过程,感兴趣的朋友一起看看吧
    2021-11-11
  • Python程序设计入门(1)基本语法简介

    Python程序设计入门(1)基本语法简介

    Python是当今日趋流行的一种脚本语言,它比Java更简单,比php更强大,并且还适用于做桌面应用的开发,这篇文章主要介绍了Python基本语法,需要的朋友可以参考下
    2014-06-06
  • Python实现接口下载json文件并指定文件名称

    Python实现接口下载json文件并指定文件名称

    在 Web 开发中,提供文件下载功能是一种常见的需求,尤其是当涉及到导出数据为 JSON 格式时,为了确保文件名的自定义以及避免乱码问题,开发者需要采取一些特定的措施,本文介绍了Python实现接口下载json文件并指定文件名称,需要的朋友可以参考下
    2024-10-10
  • PyPy 如何让Python代码运行得和C一样快

    PyPy 如何让Python代码运行得和C一样快

    这篇文章主要介绍了如何让Python代码运行得和C一样快,由于 PyPy 只是 Python 的一种替代实现,大多数时候它都是开箱即用,无需对 Python 项目进行任何更改。它与 Web 框架 Django、科学计算包 Numpy 和许多其他包完全兼容,推荐大家多多使用
    2022-01-01
  • Django框架HttpResponse和HttpRequest对象学习

    Django框架HttpResponse和HttpRequest对象学习

    这篇文章主要介绍了Django框架HttpResponse和HttpRequest对象学习,有需要的朋友可以借鉴参考下,希望可以有所帮助,祝大家早日升职加薪
    2021-09-09

最新评论