__slots__是什么?它又有什么功能呢?
在这里,我们首先得了解,在python中是默认用字典来保存对象的实例属性的,这样做的好处是允许我们在允许的任意时刻去设置新的属性,但是坏处是不能够在对象创建的时候分配固定的内存空间来保存所有的属性,造成的后果是创建很多个实例对象的时候会浪费很多的内存空间。
__slots__属性就是用来解决这个问题的,它用来限制实例的属性字段,在创建大量对象的情况下可以减少内存的占用。
具体的用法如下:
class Test(object):
__slots__ = ["name", "age"]
def __init__(self, name, age):
self.name = name
self.age = age
补充:
- __slots__限制了属性值,添加__slots__元组之外的属性会报错!
- __slots__限制的是实例属性的添加,不限制类属性的添加!