python使用__slots__类属性节省空间

定义__slots__类属性

  • 默认情况下,python中每个实例都用一个字典__dict__来存储所有的实例属性,但是由于字典底层是哈希表,是一种空间换时间的策略,如果程序中有非常多的实例,则内存消耗巨大。解决访问是使用__slots__类属性。
  • __slots__的原理是让解释器以元组的形式存储实例属性而非字典。
  • __slots__使用方法如下,在类中定义类属性__slots__的目的是告诉解释器,这里列出的是这个类的所有实例属性,请用元组来储存它们。

__slots__注意事项

  • 每个子类都要定义__slots__属性,因为解释器会忽略继承的__slots__属性
  • 实例只能拥有__slots__中列出的属性
  • 把__dict__加入__slots__可以实现动态添加属性,但是这样就与__slots__原本的目的背道而驰了。
  • 如果不把__weakref__加入__slots__,实例就不能作为弱引用的所指对象。
posted @   肖肖凯  阅读(47)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示