摘要

當(dāng)一個類需要創(chuàng)建大量實例時,可以通過__slots__聲明實例所需要的屬性,

例如,class Foo(object): __slots__ = ['foo']。這樣做帶來以下優(yōu)點:

  1. 更快的屬性訪問速度

  2. 減少內(nèi)存消耗

以下測試環(huán)境為Ubuntu16.04 Python2.7


Slots的實現(xiàn)

我們首先來看看用純Python是如何實現(xiàn)__slots__(為了將以下實現(xiàn)的slots與原slots區(qū)分開來,代碼中用單下劃線的_slots_來代替)

class Member(object):
    # 定義描述器實現(xiàn)slots屬性的查找
    def __init__(self, i):
        self.i = i    def __get__(sel