[Python]新式类的__slots__属性
来源:互联网 发布:mac apache php 编辑:程序博客网 时间:2024/05/22 20:57
Python新模式的class,即从object继承下来的类有一个变量是__slots__,slots的作用是阻止在实例化类时为实例分配dict,默认情况下每个类都会有一个dict,通过__dict__访问,这个dict维护了这个实例的所有属性,dict会占据大量内存,这在属性数量很少,但是类的实例数目很多的情况可以减少内存占用。基本上,__slots__是一个类变量,有一个序列型对象组成,由所有合法标识构成的实例属性的集合来表示。它可以是一个列表,元组或可迭代对象。也可以是由标识实例能拥有的唯一的属性的简单字符串,任何试图创建一个其名不在__slots__中的名字的实例属性都将导致AttributeError异常。
例:
class P(object): __slots__ = ('x','y') def __init__(self,x=0,y=0): self.x = x self.y = y p = P()p.z = 100print p.z:
AttributeError: 'P' object has no attribute 'z'
这种特性的主要目的是节约内存。其副作用是某种类型的“安全”,它能防止用户随心所欲的动态增加实例属性。带__slots__属性的类不会存在__dict__了(除非你在__slots__中增加‘__dict__元素’)。
class P(object): __slots__ = ('x','y') def __init__(self,x=0,y=0): self.x = x self.y = y p = P()#p.z = 100#print p.zprint p.__dict__
:
AttributeError: 'P' object has no attribute '__dict__'
REF:Core Python Programming
0 0
- [Python]新式类的__slots__属性
- python 类的__slots__属性
- 类的__slots__属性
- Python----__slots__ 一个类允许的属性列表
- Python学习笔记 __slots__ 限制类属性
- Python-用__slots__限制类属性
- python通过__slots__限制类实例动态的增加属性、方法
- python的__slots__
- python的__slots__
- Python的__slots__
- Python的__slots__
- Python __slots__的作用
- python的__slots__
- [Python] 新式类中 __new__的理解
- Python之 __slots__ 的用法
- python __slots__
- python __slots__
- Python __slots__
- 【HDU】2860 Regroup 并查集
- Android Fragment 真正的完全解析(上)
- u-boot的Makefile分析
- hdoj 1687 Lucky Light 【区间找点】
- Spark1.01运行例子以及问题解决
- [Python]新式类的__slots__属性
- 学习opencv之(六)-图像切割,使用ROI
- C#接口规范
- Ubutun常用命令之mount
- U-BOOT之一:BootLoader 的概念与功能
- android录音和得到音量
- UVA - 10361
- 使用EncodingFilter过滤器来完成统一编码
- python 进阶学习之9