Python中__slots__的禁用实例

1、说明

Python 的对象属性值都是采用字典存储的,当我们处理数成千上万甚至更多的实例时,内存消耗可能是一个问题,因为字典哈希表的实现,总是为每个实例创建了大量的内存。所以 Python 提供了一种 __slots__ 的方式来禁用实例使用 __dict__,以优化此问题。

2、实例

通过 __slots__ 来指定属性后,会将属性的存储从实例的 __dict__ 改为类的 __dict__ 中:

classTest:
__slots__=('a','b')

def__init__(self,a,b):
self.a=a
self.b=b
>>>t=Test(1,2)
>>>t.__dict__
AttributeError:'Test'objecthasnoattribute'__dict__'
>>>Test.__dict__
mappingproxy({'__module__':'__main__',
'__slots__':('a','b'),
'__init__':<function__main__.Test.__init__(self,a,b)>,
'a':<member'a'of'Test'objects>,
'b':<member'b'of'Test'objects>,
'__doc__':None})

以上就是Python中__slots__的禁用实例,希望对大家有所帮助。更多Python学习推荐:python教学

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。