Python学习笔记 __slots__ 限制类属性
来源:互联网 发布:snapgene mac 编辑:程序博客网 时间:2024/06/07 04:01
Python允许在定义class的时候,定义一个特殊的slots变量,来限制该class能添加的属性
>>> obj = object()>>> obj.name = "whatever"Traceback (most recent call last): File "<stdin>", line 1, in <module>AttributeError: 'object' object has no attribute 'name'
但是为什么这样就可以呢:
>>> class Object(object):pass...>>> Obj = Object()>>> Obj.name = "whatever">>> Obj.name'whatever'>>>
答: 现在你给第二个代码块中的Object加上属性 slots 试试:
>>> class Object(object):... __slots__ = {}...>>> Obj = Object()>>> Obj.name = "whatever"Traceback (most recent call last): File "<stdin>", line 1, in <module>AttributeError: 'Object' object has no attribute 'name'
会发现抛出了同样的异常。 object 、 list 、 dict 等内置函数都如此。
拥有 slots 属性的类在实例化对象时不会自动分配 dict ,而 obj.attr 即 obj.dict[‘attr’], 所以会引起 AttributeError
对于拥有 slots 属性的类的实例 Obj 来说,只能对 Obj 设置 slots 中有的属性:
>>> class Object(object):... __slots__ = {"a","b"}...>>> Obj = Object()>>> Obj.a = 1>>> Obj.a1>>> Obj.c = 1Traceback (most recent call last): File "<stdin>", line 1, in <module>AttributeError: 'Object' object has no attribute 'c'
0 0
- Python学习笔记 __slots__ 限制类属性
- Python-用__slots__限制类属性
- python学习笔记 使用__slots__
- python 类的__slots__属性
- python通过__slots__限制类实例动态的增加属性、方法
- Python3学习(23)--__slots__ 限制实例属性的绑定
- Python学习笔记——__slots__
- [Python]新式类的__slots__属性
- python学习02 --__slots__
- 类的__slots__属性
- Python----__slots__ 一个类允许的属性列表
- python __slots__
- python __slots__
- Python __slots__
- Python---__slots__
- python __slots__
- Python __slots__限制动态变量个数,节省内存
- python学习——使用__slots__
- Zookeeper的watcher数据变更通知机制
- spring的配置文件中mvc:view-controller path使用方法
- Third Maximum Number
- 全面分析 Spring 的编程式事务管理及声明式事务管理
- 在页面里面播放音频文件
- Python学习笔记 __slots__ 限制类属性
- 链表的构建与排序
- springmvc之视图和视图解析器
- MySql基础1
- 【Codeforces 747 C Servers 】+ 思维 或 优先队列
- Lua编程笔录--Lua初识及语法一(注释,变量命名,全局/局部变量,数据类型)
- Apache禁用测试页(默认页)
- init.rc的触发顺序
- Chapter 1 Introduction