通过实例了解python__slots__使用方法


Posted in Python onSeptember 14, 2020

一、背景

python是一个动态语言,可以支持我们在运行时动态的给类、对象添加属性或者方法;但是如果我们想要限制可以添加的属性或方法该怎么办呢?

二、__slots__

python允许在定义class的时候,定义一个特殊的__slots__变量,来限制该class能添加的属性:

>>> class Student(object):
... __slots__ = ('name', 'age') # 用tuple定义允许绑定的属性名称
...

然后尝试添加属性:

>>> s = Student() # 创建新的实例
>>> s.name = 'Michael' # 绑定属性'name'
>>> s.age = 25 # 绑定属性'age'
>>> s.score = 99 # 绑定属性'score'
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
AttributeError: 'Student' object has no attribute 'score'

由于'score'没有被放到__slots__中,所以不能绑定score属性,试图绑定score将得到AttributeError的错误。

使用__slots__要注意,__slots__定义的属性仅对当前类起作用,对继承的子类是不起作用的:

>>> class GraduateStudent(Student):
... pass
...
>>> g = GraduateStudent()
>>> g.score = 9999

除非在子类中也定义__slots__,这样,子类允许定义的属性就是自身的__slots__加上父类的__slots__。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python字符串的encode与decode研究心得乱码问题解决方法
Mar 23 Python
详解Django框架中用context来解析模板的方法
Jul 20 Python
python模块之paramiko实例代码
Jan 31 Python
python 接收处理外带的参数方法
Dec 03 Python
python使用pygame模块实现坦克大战游戏
Mar 25 Python
numpy.random模块用法总结
May 27 Python
Tensorflow分批量读取数据教程
Feb 07 Python
Python调用百度OCR实现图片文字识别的示例代码
Jul 17 Python
python 合并多个excel中同名的sheet
Jan 22 Python
python解决12306登录验证码的实现
Apr 18 Python
教你利用Selenium+python自动化来解决pip使用异常
May 20 Python
python井字棋游戏实现人机对战
Apr 28 Python
python如何遍历指定路径下所有文件(按按照时间区间检索)
Sep 14 #Python
详解python实现可视化的MD5、sha256哈希加密小工具
Sep 14 #Python
Python利用pip安装tar.gz格式的离线资源包
Sep 14 #Python
Python tkinter制作单机五子棋游戏
Sep 14 #Python
python安装cx_Oracle和wxPython的方法
Sep 14 #Python
python输入中文的实例方法
Sep 14 #Python
python与js主要区别点总结
Sep 13 #Python
You might like
php strcmp使用说明
2010/04/22 PHP
PHP GD 图像处理组件的常用函数总结
2010/04/28 PHP
ThinkPHP3.2框架自定义配置和加载用法示例
2018/06/14 PHP
拖动Html元素集合 Drag and Drop any item
2006/12/22 Javascript
深入理解JavaScript系列(14) 作用域链介绍(Scope Chain)
2012/04/12 Javascript
js实现Select头像选择实时预览代码
2015/08/17 Javascript
jQuery ajax提交Form表单实例(附demo源码)
2016/04/06 Javascript
浅析JavaScript中的对象类型Object
2016/05/26 Javascript
微信小程序  checkbox组件详解及简单实例
2017/01/10 Javascript
微信小程序图片宽100%显示并且不变形
2017/06/21 Javascript
webpack4打包vue前端多页面项目
2018/09/17 Javascript
深入解析koa之中间件流程控制
2019/06/17 Javascript
微信小程序云函数添加数据到数据库的方法
2020/03/04 Javascript
Python接收Gmail新邮件并发送到gtalk的方法
2015/03/10 Python
详解Python中的日志模块logging
2015/06/19 Python
Python实现将DOC文档转换为PDF的方法
2015/07/25 Python
python自动裁剪图像代码分享
2017/11/25 Python
Python tkinter实现的图片移动碰撞动画效果【附源码下载】
2018/01/04 Python
python入门前的第一课 python怎样入门
2018/03/06 Python
Python文件读写保存操作的示例代码
2018/09/14 Python
pygame实现雷电游戏雏形开发
2018/11/20 Python
python传到前端的数据,双引号被转义的问题
2020/04/03 Python
python中round函数如何使用
2020/06/19 Python
python可视化分析的实现(matplotlib、seaborn、ggplot2)
2021/02/03 Python
MyFrenchPharma中文网:最大的法国药妆平台
2016/10/07 全球购物
美国领先的礼品卡网站:GiftCards.com
2016/11/02 全球购物
Sunglass Hut巴西网上商店:男女太阳镜
2020/10/04 全球购物
Java基础知识面试要点
2016/07/29 面试题
总经理助理岗位职责
2013/11/08 职场文书
如何撰写岗位职责
2014/02/01 职场文书
市场营销毕业求职信
2014/08/07 职场文书
2014年车间主任工作总结
2014/12/10 职场文书
小学生优秀评语
2014/12/29 职场文书
河童之夏观后感
2015/06/11 职场文书
2016年入党心得体会范文
2016/01/23 职场文书
妇联2016年六一国际儿童节活动总结
2016/04/06 职场文书