大家好,欢迎来到IT知识分享网。
对象的属性是存储在一个字典中的。使用字典意味着数量是不固定的,可以增加属性到这个字典中。
例如:
输出:
对象 c 增加了两个属性:a 和 x,通过访问对象的 __dict__ 字典,可以看到这两个属性以及他们的值。
但是,你不能对系统内置的类型增加新的属性,例如 int、list。
使用字典存储属性是非常便利的,我们可以随时增加新的属性。但是这样是很浪费空间的,尤其是你要创建大量的对象时。
Slots 就是要解决这个问题的,使用 Slots,不能动态的添加属性,它提供了一个静态的数据结构。
当创建一个类的时候,使用属性 __slots__,声明一个列表,列表中必须包含你要使用的所有的属性。我们通过如下的类解释。
输出:
使用 __slots__ 后,除了定义的属性名称外,再访问未知的属性,会触发 AttributeError 错误。
使用 __slots__ 可以节省空间,但是从 Python 3.3 后,这个特性就不那么明显了。Python 3.3 之后,使用 Key-Sharing Dictionaries 存储对象。属性可以在多个对象之间共享存储,这样会减少程序占用的空间。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/50868.html