如何在Python中禁用__slots__

  介绍

如何在Python中禁用__slots__ ?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

Python的五大特点是什么

Python的五大特点:1。简单易学,开发程序时,专注的是解决问题,而不是搞明白语言本身。2。面向对象,与其他主要的语言如c++和Java相比,Python以一种非常强大又简单的方式实现面向对象编程。3。可移植性,Python程序无需修改就可以在各种平台上运行。4。解释性,Python语言写的程序不需要编译成二进制代码,可以直接从源代码运行程序。5。开源,Python是牙线(自由/开放源码软件)之一。

<强> 1,说明

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

<强> 2,实例

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

 class 测试:
  ,,,__slots__ =,(& # 39;一个# 39;,,& # 39;b # 39;)
  ,
  ,,,def  __init__(自我,,a, b):
  ,,,,,,,self.a =,
  ,,,,,,,self.b  b=,
  在祝辞祝辞,t =,测试(1,2)
  在祝辞祝辞t.__dict__
  AttributeError: & # 39;测试# 39;,object  has  no  attribute  & # 39; __dict__& # 39;
  在祝辞祝辞Test.__dict__
  mappingproxy ({& # 39; __module__& # 39;:, & # 39; __main__ # 39;,
  ,,,,,,,,,,,,,& # 39;__slots__ # 39;:,(& # 39;一个# 39;,,& # 39;b # 39;),
  ,,,,,,,,,,,,,& # 39;__init__ # 39;:, & lt; function  __main__.Test.__init__(自我,,a, b)的在,
  ,,,,,,,,,,,,,& # 39;一个# 39;:,& lt; member  & # 39;一个# 39;,of  & # 39;测试# 39;,objects>
  ,,,,,,,,,,,,,& # 39;b # 39;:, & lt; member  & # 39; b # 39;, of  & # 39;测试# 39;,objects>
  ,,,,,,,,,,,,,& # 39;__doc__& # 39;:,没有})

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注行业资讯频道,感谢您对的支持。

如何在Python中禁用__slots__