In [2]:
import sys
class test(object):
def __init__(self,name):
self.name = name
In [3]:
class test2(object):
__slots__ = ["name"]
def __init__(self,name):
self.name = name
In [4]:
a = test('alex')
b = test2('lilei')
print(sys.getsizeof(a))
48
In [5]:
print(sys.getsizeof(b))
40
In [6]:
56-48
Out[6]:
8
In [7]:
8.0/56
Out[7]:
0.14285714285714285
上述代码可以看到,python为对象 a 分配了 56 Byte 的内存,而为对象b分配了 48 Byte 的内存, 总共节省了 8 Byte ,也就是节省了14.3%的内存空间。
综上:__slots__就是一个节省内存开销的内建方法。