__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__

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