一个场景
class Base(object):
pass
b = Base()
print b.__dict__ # {}
b.a = 'a'
print b.__dict__ # {'a','a'}
我们发现,所有继承自object类的类的对象都有一个__dict__属性,这事实上耗费了大量内存(尤其是在需要创建大量对象的程序中)。
slots
通过在类定义中加入__slots__,我们可以限制动态给对象添加属性的行为,更重要的是,这能大大减少对象所占的内存(对象不再拥有__dict__属性)。
class Base(object):
__slots__ = ("a")
b = Base()
b.a = 'a'
b.b = 'b' #报错,不能添加这个属性
# AttributeError: 'Base' object has no attribute 'b'
网友评论