摘要
當(dāng)一個類需要創(chuàng)建大量實(shí)例時,可以通過__slots__
聲明實(shí)例所需要的屬性,
例如,class Foo(object): __slots__ = ['foo']
。這樣做帶來以下優(yōu)點(diǎn):
更快的屬性訪問速度
減少內(nèi)存消耗
以下測試環(huán)境為Ubuntu16.04 Python2.7
Slots的實(shí)現(xiàn)
我們首先來看看用純Python是如何實(shí)現(xiàn)__slots__
(為了將以下實(shí)現(xiàn)的slots與原slots區(qū)分開來,代碼中用單下劃線的_slots_
來代替)
class Member(object): # 定義描述器實(shí)現(xiàn)slots屬性的查找 def __init__(self, i): self.i = i def __get__(sel