摘要
當(dāng)一個類需要創(chuàng)建大量實例時,可以通過__slots__
聲明實例所需要的屬性,
例如,class Foo(object): __slots__ = ['foo']
。這樣做帶來以下優(yōu)點:
更快的屬性訪問速度
減少內(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