精通 Python __slots__:优化内存与访问速度
Python 类 __slots__ 是鲜为人知的特性。定义 __slots__ 显式声明类允许拥有的字段,带来三大优势:
- 实例内存占用略降
- 属性访问更快
- 禁止随意给实例动态添加新属性
定义示例:
>>> class Card:
... __slots__ = 'rank', 'suite'
... def __init__(self, rank, suite):
... self.rank = rank
... self.suite = suite
...
>>> qh = Card('queen', 'hearts')
对我最大价值:防止拼写错误静默创建新属性。给 slotted 类实例赋值拼写错会直接抛错,而非悄悄加新属性。
简单类(无复杂继承)用 slots 优势明显。大量实例化时,内存节省与访问加速效果可观。
最后补充:dataclass 亦可结合 slots 使用!
Python