在 Python 中,一切皆对象。然而,每一个对象背后都隐藏着复杂的运行机制。尤其在类设计中,我们往往忽略了对象属性的存储方式。今天,我们将深入剖析一个常被高级开发者使用的“利器” —— __slots__
,它能有效减少内存占用、提升性能,但也伴随着一些权衡和陷阱。
本文旨在回答三个核心问题:
__slots__
是什么?它在 Python 中扮演怎样的角色?__slots__
能带来哪些具体收益?__slots__
?通常,每个 Python 类实例都有一个可变的属性字典 __dict__
,它记录该对象所有的动态属性。这种灵活性虽好,但代价是 每个对象都要存储一个额外的字典结构,占用内存并影响访问速度。
为了优化性能,Python 提供了一个机制:__slots__
。
✅
__slots__
通过限制实例属性集合,告诉解释器不再为对象创建__dict__
,从而 节省内存、提升访问效率。
__slots__
的类class Person:
__slots__ = ['name', 'age'] # 限定属性集合
def __init__(self, name, age):
self.name = name
self.age = age
p = Person('Alice',