gpt4 book ai didi

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

转载 作者:qq735679552 更新时间:2022-09-27 22:32:09 27 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章python中__slots__节约内存的具体做法由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

说明

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

2、所有属性都必须定义为__slots__元组,子类还必须定义__slots__.

实例如果支持弱引用,需要在__weakref中添加__slots__.

实例

?
1
2
3
4
class Vector2d:
     __slots__ = ( '__x' , '__y' )
 
     typecode = 'd'

知识点扩展:

__slots__ 。

​ 如果在一个类中定义了__slots__属性,那么这个类的实例将不会拥有__dict__属性,没有__dict__的实例也就不能添加实例属性了。简单来说,__slots__的作用就是阻止类在实例化时为实例分配__dict__属性,限制该实例能添加的属性.

作用 。

​ 通常情况下实例使用__dict__来存储自己的属性,它允许实例动态地添加或删除属性。然而,对一些在编译期就已经知道有什么变量的类或者不允许动态添加变量的类来说,它们并不需要动态地添加变量。如果想要限制实例属性,不想让它动态添加属性怎么办?比如我们只允许对A的实例添加name和age属性.

​ 为了达到上述目的,Python允许在定义class的时候,定义一个__slots__变量,来限制该class的实例能添加的属性.

?
1
2
3
4
5
6
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__如何节约内存的资料请关注我其它相关文章! 。

原文链接:https://www.py.cn/jishu/jichu/31388.html 。

最后此篇关于python中__slots__节约内存的具体做法的文章就讲到这里了,如果你想了解更多关于python中__slots__节约内存的具体做法的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com