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')
print(sys.getsizeof(a))
48
print(sys.getsizeof(b))
40
56-48
8
8.0/56
0.14285714285714285
上述代码可以看到,python为对象 a
分配了 56 Byte
的内存,而为对象b分配了 48 Byte
的内存,
总共节省了 8 Byte
,也就是节省了14.3%的内存空间。
综上:__slots__
就是一个节省内存开销的内建方法。