摘要
当一个类需要创建大量实例时,可以通过__slots__
声明实例所需要的属性,
例如,class Foo(object): __slots__ = ['foo']
。这样做带来以下优点:
更快的属性访问速度
减少内存消耗
以下测试环境为Ubuntu16.04 Python2.7
Slots的实现
我们首先来看看用纯Python是如何实现__slots__
(为了将以下实现的slots与原slots区分开来,代码中用单下划线的_slots_
来代替)
class Member(object): # 定义描述器实现slots属性的查找 def __init__(self, i): self.i = i def __get__(sel