zoukankan      html  css  js  c++  java
  • 使用__slots__ 来做内存优化

    为何使用__slots__ :字典会占用大量内存,

    如果一个类属性很少,但是它有很多实例对象,为了节省内存,可以使用__slots__ 来代替__dict__

    当定义__slots__ 后,__slots__ 就会为实例使用一种更加紧凑的内部表示,这时就不会为每个实例都创建一个字典了。

    __slots__ 的缺点:

    1,使用它之后,就不能再给实例添加新属性了

    2,而且也不再支持一个普通类所支持的特性了,比如,多继承。

    所以:应该在一些经常使用到的数据结构的类中定义__slots__.例如:程序中需要创建某个类的几百万个实例对象。

    还有的是,它也可以作为一个封装工具来防止用户给实例增加新的属性。但是它的主要用途还是内存优化。

    提示: 它限制了__dict__属性字典的创建。它只是个内存优化工具,一般不使用它!

    实例:

    1 class DemoClass:
    2     # __slots__ = "name"
    3     __slots__ = ["name","age","qq","tel"] #定义多个用列表
    4 
    5 if __name__ == "__main__":
    6     demo = DemoClass()
    7     demo.name = "tom"
    8     print(demo.name)
    9     #print(demo.__dict__)  #报错:AttributeError: 'DemoClass' object has no attribute '__dict__'
  • 相关阅读:
    Latex (1)
    linux/unix command
    函数类型和函数指针类型(摘自 linux c编程一站式学习)
    emacs 剪切板
    Centos 常见问题汇总
    makefile(摘自linux_c编程一站式学习)
    [转]DIV布局之三行三列之高度自适应
    ASP.Net新手项目经验谈
    获取中文首字母的方法
    还是不会伪装
  • 原文地址:https://www.cnblogs.com/zach0812/p/11310919.html
Copyright © 2011-2022 走看看