优点:
1. __slots__ 能够减小内存的占用,限制对象只能有这几个属性,再加属性会报错 .
副作用:
1. 设置了__slots__之后,实例对象就没有__dict__了
2. __slots__不能限制子类
详细代码解读:
限制对象只能有这几个属性,再加属性会报错
1. 设置了__slots__之后,实例对象就没有__dict__了
2. __slots__不能限制子类
class BaseResponse(object): __slots__ = ('code', 'data', 'msg') def __init__(self): self.code = 0 self.data = None self.msg = '' @property def dict(self): return {'code': self.code, 'data': self.data, 'msg': self.msg} if __name__ == '__main__': res_obj = BaseResponse() res_obj.data = [11, 22, 33] res_obj.code = 10003 res_obj.msg = '用户名或密码错误' print(res_obj.dict) # 设置了__slots__之后,实例对象就没有__dict__了 # print(res_obj.__dict__) # res_obj.name = 'HX' # __slots__不能限制子类 class Son(BaseResponse): pass s1 = Son() print(s1.__dict__) s1.name = 'HX' print(s1.name) print(s1.__dict__)