__slots__方法的作用
限制类实例的属性,以减少内存使用并提高性能。以下是相关要点和示例:# __slots__ 是 Python 中的一种机制,用于限制类实例的属性,以减少内存使用并提高性能。
作用
- 限制属性:定义哪些属性可以在类实例中使用。
- 节省内存:避免为每个实例创建
__dict__,从而节省内存。 - 提高性能:访问
__slots__中定义的属性速度更快。
示例代码
class Point:
__slots__ = ['x', 'y'] # 限定只允许 x 和 y 属性
def __init__(self, x, y):
self.x = x
self.y = y
# 创建实例
p = Point(1, 2)
# 访问属性
print(p.x, p.y) # 输出: 1 2
# 尝试添加新属性
try:
p.z = 3 # 会引发 AttributeError
except AttributeError as e:
print(e) # 输出: 'Point' object has no attribute 'z'
要点
- 使用
__slots__只在需要大量实例且需节省内存时推荐。 - 不能使用
__slots__的子类无法访问父类动态属性。 - 适用于简单的类,复杂类可能不适用此机制。
通过 __slots__,可以在需要时有效控制类的实例属性,提高内存效率。