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