返回顶部
首页 > 资讯 > 后端开发 > Python >python中__slots__节约内存的具体做法
  • 653
分享到

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

python__slots__节约内存 2022-06-02 22:06:34 653人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

说明 利用_slots__类属性,可以将实例属性存储在元zu中,大大节省了存储空间。 所有属性都必须定义为__slots__元组,子类还必须定义__slots__。 实例如果支持弱引用,需要在__weakref中添加

说明

利用_slots__类属性,可以将实例属性存储在元zu中,大大节省了存储空间。

所有属性都必须定义为__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__如何节约内存的资料请关注编程网其它相关文章!

--结束END--

本文标题: python中__slots__节约内存的具体做法

本文链接: https://lsjlt.com/news/11085.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作