python使用__slots__类属性节省空间
定义__slots__类属性
- 默认情况下,python中每个实例都用一个字典__dict__来存储所有的实例属性,但是由于字典底层是哈希表,是一种空间换时间的策略,如果程序中有非常多的实例,则内存消耗巨大。解决访问是使用__slots__类属性。
- __slots__的原理是让解释器以元组的形式存储实例属性而非字典。
- __slots__使用方法如下,在类中定义类属性__slots__的目的是告诉解释器,这里列出的是这个类的所有实例属性,请用元组来储存它们。
__slots__注意事项
- 每个子类都要定义__slots__属性,因为解释器会忽略继承的__slots__属性
- 实例只能拥有__slots__中列出的属性
- 把__dict__加入__slots__可以实现动态添加属性,但是这样就与__slots__原本的目的背道而驰了。
- 如果不把__weakref__加入__slots__,实例就不能作为弱引用的所指对象。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现