在伯乐在线上看到了这篇文章,,于是想测试下,对单个类,用__slots__节省内存效果会不会明显。
看完这个例子后,我们也会明白__slots__是用来干嘛的。
:import sys:class test(object):: def __init__(self,name):: self.name = name: ::class test2(object):: __slots__ = ["name"]: def __init__(self,name):: self.name = name::a = test('alex'):b = test2('lilei'):--In [36]: print(sys.getsizeof(a))64In [37]: print(sys.getsizeof(b))56In [38]: 64-56Out[38]: 8In [40]: 8.0/64Out[40]: 0.125
上述代码可以看到,python为对象a分配了64 Byte的内存,而为对象b分配了56 Byte的内存,总共节省了8 Byte,也就是节省了12.5%的内存空间。
综上:__slots__就是一个节省内存开销的内建方法。