摘要

当一个类需要创建大量实例时,可以通过__slots__声明实例所需要的属性,

例如,class Foo(object): __slots__ = ['foo']。这样做带来以下优点:

  1. 更快的属性访问速度

  2. 减少内存消耗

以下测试环境为Ubuntu16.04 Python2.7


Slots的实现

我们首先来看看用纯Python是如何实现__slots__(为了将以下实现的slots与原slots区分开来,代码中用单下划线的_slots_来代替)

class Member(object):
    # 定义描述器实现slots属性的查找
    def __init__(self, i):
        self.i = i    def __get__(sel