zoukankan      html  css  js  c++  java
  • 面向对象的 __slots__

    优点:

      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__)
  • 相关阅读:
    window10使用vagrant+virtualBox搭建centos7
    吾日三思
    搭建EFK过程
    docker端口映射失效解决方法
    centos7防火墙相关命令
    docker学习
    python 读取hive数据
    shell 命令 查看本机ip
    shell 命令 修改hosts文件
    shell 命令 mkdir -p
  • 原文地址:https://www.cnblogs.com/yuanyongqiang/p/10312206.html
Copyright © 2011-2022 走看看