__slots__

作者: bigtom | 来源:发表于2016-09-19 21:04 被阅读9次

一个场景

class Base(object):
    pass
b = Base()
print b.__dict__  # {}
b.a = 'a'
print b.__dict__  # {'a','a'}

我们发现,所有继承自object类的类的对象都有一个__dict__属性,这事实上耗费了大量内存(尤其是在需要创建大量对象的程序中)。

slots

通过在类定义中加入__slots__,我们可以限制动态给对象添加属性的行为,更重要的是,这能大大减少对象所占的内存(对象不再拥有__dict__属性)。

class Base(object):
    __slots__ = ("a")
b = Base()
b.a = 'a'
b.b = 'b' #报错,不能添加这个属性
# AttributeError: 'Base' object has no attribute 'b'

相关文章

  • _slots_简介2-使用

    __slots__作用 类成员变量描述符 __slots__是一个元祖 类的实例只能拥有__slots__中定义的...

  • Python限制属性

    __slots__

  • Python进阶话题杂谈(四)__slots__

    __slots__是Python类中的一个非常重要的优化手段。使用了__slots__的类,其在内存占用、实例化以...

  • __slots__

    现在我们终于明白了,动态语言与静态语言的不同 动态语言:可以在运行的过程中,修改代码 静态语言:编译时已经确定好代...

  • __slots__

    __slots__变量,来限制class实例能添加的属性 例:

  • __slots__

    一个场景 我们发现,所有继承自object类的类的对象都有一个__dict__属性,这事实上耗费了大量内存(尤其是...

  • __slots__

    class Student(object):slots=('name','age') 用slots来定义只允许对S...

  • xlwt3安装及缩进问题

    1、程序运行报错:ValueError: '__init__' in __slots__ conflicts wi...

  • python中常用的__xxx__特殊变量

    1、__getattr__ 2、__setattr__ 3、__slots__ slots详解 4、__str__...

  • Python 面向对象高级编程

    使用__slots__ 使用@property 多重继承 定制类 使用枚举类 使用元类

网友评论

      本文标题:__slots__

      本文链接:https://www.haomeiwen.com/subject/tppnettx.html