Python类中的魔法方法之 __slots__原理解析


Posted in Python onAugust 26, 2019

在类中每次实例化一个对象都会生产一个字典来保存一个对象的所有的实例属性,这样非常的有用处,可以使我们任意的去设置新的属性。

每次实例化一个对象python都会分配一个固定大小内存的字典来保存属性,如果对象很多的情况下会浪费内存空间。

可通过__slots__方法告诉python不要使用字典,而且只给一个固定集合的属性分配空间

class Foo(object):
 __slots__ = ("x","y","z")

 def __init__(self,x,y):
  self.x = x
  self.y = y
  self.z = None

 def tell_info(self,name):
  return getattr(self,name)

c = Foo(10,20)
# 设置和获取__slots__中设置的可访问实例属性
print(c.tell_info("x"))  # 结果:10

c.z=50
print(c.tell_info("z")) # 结果:50

# 设置一个不在__slots__中存在的属性,会报错
c.e = 70 # AttributeError: 'Foo' object has no attribute 'e'

# 访问对象.__dict__ 也会直接报错
print(c.__dict__) # AttributeError: 'Foo' object has no attribute '__dict__'

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

Python 相关文章推荐
Python3 中文文件读写方法
Jan 23 Python
Python实现的简单线性回归算法实例分析
Dec 26 Python
利用PyCharm Profile分析异步爬虫效率详解
May 08 Python
Python实现生成密码字典的方法示例
Sep 02 Python
python爬取Ajax动态加载网页过程解析
Sep 05 Python
python基于plotly实现画饼状图代码实例
Dec 16 Python
使用pyhon绘图比较两个手机屏幕大小(实例代码)
Jan 03 Python
python pptx复制指定页的ppt教程
Feb 14 Python
Python configparser模块配置文件过程解析
Mar 03 Python
python 提高开发效率的5个小技巧
Oct 19 Python
python中用ggplot绘制画图实例讲解
Jan 26 Python
python三子棋游戏
May 04 Python
pywinauto自动化操作记事本
Aug 26 #Python
Python 实现的 Google 批量翻译功能
Aug 26 #Python
python自动化工具之pywinauto实例详解
Aug 26 #Python
Python3简单爬虫抓取网页图片代码实例
Aug 26 #Python
python 数据提取及拆分的实现代码
Aug 26 #Python
Python3 使用pillow库生成随机验证码
Aug 26 #Python
python excel转换csv代码实例
Aug 26 #Python
You might like
Laravel框架中实现使用阿里云ACE缓存服务
2015/02/10 PHP
php结合ajax实现手机发红包的案例
2016/10/13 PHP
PHP实现微信申请退款功能
2018/10/01 PHP
laravel利用中间件做防非法登录和权限控制示例
2019/10/21 PHP
JS的数组的扩展实例代码
2008/07/09 Javascript
jquery text()要注意啦
2009/10/30 Javascript
jQuery下的几个你可能没用过的功能
2010/08/29 Javascript
jQuery学习基础知识小结
2010/11/25 Javascript
js css后面所带参数含义介绍
2013/08/18 Javascript
js中的时间转换—毫秒转换成日期时间的示例代码
2014/01/26 Javascript
jquery实现pager控件示例
2014/04/09 Javascript
javascript实现图片轮播效果
2016/01/20 Javascript
jQuery基于xml格式数据实现模糊查询及分页功能的方法
2016/12/25 Javascript
原生js实现类似fullpage的单页/全屏滚动
2017/01/22 Javascript
jQuery日程管理控件glDatePicker用法详解
2017/03/29 jQuery
Linux CentOS系统下安装node.js与express的方法
2017/04/01 Javascript
jquery实现点击a链接,跳转之后,该a链接处显示背景色的方法
2018/01/18 jQuery
webpack4 SCSS提取和懒加载的示例
2018/09/03 Javascript
JavaScript实现随机点名器
2020/03/25 Javascript
[09:34]2018DOTA2国际邀请赛寻真——永不放弃的iG
2018/08/14 DOTA
Python实现的十进制小数与二进制小数相互转换功能
2017/10/12 Python
python学习基础之循环import及import过程
2018/04/22 Python
Python实现的括号匹配判断功能示例
2018/08/25 Python
Python的iOS自动化打包实例代码
2018/11/22 Python
numpy:np.newaxis 实现将行向量转换成列向量
2019/11/30 Python
利用Tensorflow构建和训练自己的CNN来做简单的验证码识别方式
2020/01/20 Python
python中68个内置函数的总结与介绍
2020/02/24 Python
django 模型中的计算字段实例
2020/05/19 Python
CSS3绘制圆角矩形的简单示例
2015/09/28 HTML / CSS
英国评分最高的女性剃须刀订阅盒:FFS Beauty
2018/01/25 全球购物
北大研究生linux应用求职信
2013/10/29 职场文书
物业管理个人自我评价
2013/11/08 职场文书
2015年保管员工作总结
2015/04/30 职场文书
pytorch中Schedule与warmup_steps的用法说明
2021/05/24 Python
动漫APP软件排行榜前十名,半次元上榜,第一款由腾讯公司推出
2022/03/18 杂记
Java 多线程并发FutureTask
2022/06/28 Java/Android