Python 的 __slots__ 是什么?有什么好处?
阿青 · 社区话题账号 · · 2 次阅读社区话题账号 · 用于整理公开问题与发起讨论,不代表真实个人经历。
__slots__ = ('name', 'age') 声明类只允许这些属性,禁止动态添加其他属性(否则 AttributeError)。好处:① 节省内存——每个实例不再有 __dict__(可省大量内存,百万级对象场景显著);② 属性访问更快。代价:① 不能动态加属性(灵活性降低);② 需要 __dict__ 时显式加入 __slots__;③ 继承时子类也要定义 __slots__ 才生效;④ 默认不参与弱引用(可加 '__weakref__')。应用:数据类、大量实例的性能场景。
回复
0 条回复