Python学习笔记——__slots__
2017-08-27 16:35
323 查看
今天周末简单的说一下slots这个东西。
我们上次说了,Python是动态语言,是可以动态添加类和对象的属性的,利用对象名/类名.属性名 = types.MethodType(方法名,对象名/类名)动态为类或者对象添加方法。
我们看一个例子。
这是我们上次说的,动态添加类属性与对象属性。
添加了一个对象属性name一个类属性age
然后在对象中可以直接调用。
假如说,我利用类的私有属性slots标记下只能够动态创建属性名为name的属性。
只能拥有name属性,当为对象动态添加age的时候程序就挂了。
可见slots对对象属性的添加是起限制作用的。
我们直接为类添加属性,是没有问题的,对象也会拥有类的这个属性,并且调用name,age都没有问题
可见slots对类属性的添加是不起作用的。
由上图我们看出,slots对动态添加对象方法也是有限制作用的。
上图我们添加了类属性xiaoming,然后添加了类方法run,后创建对象,利用对象调用run()方法也是可行的
可见slots对动态添加类方法有没有影响。
slots = (‘属性名’)
这就意味着,这个类生成的对象,在动态添加元素的时候只能够添加元祖中的元素名。从而限制对象的动态添加元素行为。
添加类元素,完全不受它的影响。
我们上次说了,Python是动态语言,是可以动态添加类和对象的属性的,利用对象名/类名.属性名 = types.MethodType(方法名,对象名/类名)动态为类或者对象添加方法。
slots对动态添加对象属性的影响
我们可以在构造类的时候做一些限制。我们看一个例子。
这是我们上次说的,动态添加类属性与对象属性。
添加了一个对象属性name一个类属性age
然后在对象中可以直接调用。
假如说,我利用类的私有属性slots标记下只能够动态创建属性名为name的属性。
只能拥有name属性,当为对象动态添加age的时候程序就挂了。
可见slots对对象属性的添加是起限制作用的。
slots对动态添加类属性的影响
我们直接为类添加属性,是没有问题的,对象也会拥有类的这个属性,并且调用name,age都没有问题
可见slots对类属性的添加是不起作用的。
slots对动态添加对象方法的影响
下面我们动态添加一下对象方法。由上图我们看出,slots对动态添加对象方法也是有限制作用的。
slots对动态添加类方法的影响
上图我们添加了类属性xiaoming,然后添加了类方法run,后创建对象,利用对象调用run()方法也是可行的
可见slots对动态添加类方法有没有影响。
总结
在构造类的时候写入私有属性slots = (‘属性名’)
这就意味着,这个类生成的对象,在动态添加元素的时候只能够添加元祖中的元素名。从而限制对象的动态添加元素行为。
添加类元素,完全不受它的影响。
相关文章推荐
- python学习笔记1:面向对象的高级特性1__slots__
- 【Python】学习笔记——-8.1、面向对象高级编程:1.使用__slots__
- python学习笔记之“__slots__”
- Python学习笔记 __slots__ 限制类属性
- python学习笔记 使用__slots__
- 初学Python的学习笔记9----面向对象编程(获取对象信息、实例属性和类属性)、面向对象高级编程(使用__slots__、使用@property)
- Python学习笔记-Turtle库简单实例之日期时间显示
- [学习笔记]Python_数据类型
- 快速入门python学习笔记
- python OpenCV学习笔记(二十四):直方图反向投影
- python学习笔记:多行注释
- Python学习笔记(二)条件判断
- Python基础学习笔记(四)
- [python学习笔记] 开篇
- Head First Python (中文)学习笔记-1,2章
- [Python学习笔记]1——从零开始学Python
- Python学习笔记(一)
- Tensorflow学习笔记---1--Python基本操作
- 阿齐兹的Python学习笔记——移动应用开发
- Python学习笔记一 基础知识