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 相关文章推荐
python实现在每个独立进程中运行一个函数的方法
Apr 23 Python
python通过apply使用元祖和列表调用函数实例
May 26 Python
python基于pygame实现响应游戏中事件的方法(附源码)
Nov 11 Python
python如何使用正则表达式的前向、后向搜索及前向搜索否定模式详解
Nov 08 Python
Python使用爬虫爬取静态网页图片的方法详解
Jun 05 Python
Flask框架响应、调度方法和蓝图操作实例分析
Jul 24 Python
如何在Django中设置定时任务的方法示例
Jan 18 Python
python制作抖音代码舞
Apr 07 Python
解决tensorflow打印tensor有省略号的问题
Feb 04 Python
python用WxPython库实现无边框窗体和透明窗体实现方法详解
Feb 21 Python
Python CSS选择器爬取京东网商品信息过程解析
Jun 01 Python
Python用dilb提取照片上人脸的示例
Oct 26 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
PHP里8个鲜为人知的安全函数分析
2014/12/09 PHP
动态加载js的几种方法
2006/10/23 Javascript
Google AJAX 搜索 API实现代码
2010/11/17 Javascript
Enter转换为Tab的小例子(兼容IE,Firefox)
2013/11/14 Javascript
JS不间断向上滚动效果代码
2013/12/25 Javascript
jQuery实现页面内锚点平滑跳转特效的方法总结
2015/05/11 Javascript
Javascript实现代码折叠功能
2016/08/25 Javascript
javascript滚轮控制模拟滚动条
2016/10/19 Javascript
JS定时器实现数值从0到10来回变化
2016/12/09 Javascript
基于bootstrap按钮式下拉菜单组件的搜索建议插件
2017/03/25 Javascript
vue router的基本使用和配置教程
2018/11/05 Javascript
JS基于开关思想实现的数组去重功能【案例】
2019/02/18 Javascript
解决vue中使用proxy配置不同端口和ip接口问题
2019/08/14 Javascript
vue实现手机号码的校验实例代码(防抖函数的应用场景)
2019/09/05 Javascript
three.js显示中文字体与tween应用详析
2021/01/04 Javascript
django批量导入xml数据
2016/10/16 Python
python分治法求二维数组局部峰值方法
2018/04/03 Python
Python求两个圆的交点坐标或三个圆的交点坐标方法
2018/11/07 Python
Python Pillow Image Invert
2019/01/22 Python
python pytest进阶之fixture详解
2019/06/27 Python
Python寻找路径和查找文件路径的示例
2019/07/10 Python
使用tensorflow显示pb模型的所有网络结点方式
2020/01/23 Python
python实现交并比IOU教程
2020/04/16 Python
使用Python合成图片的实现代码(图片添加个性化文本,图片上叠加其他图片)
2020/04/30 Python
Python xlwings插入Excel图片的实现方法
2021/02/26 Python
英国时尚高尔夫服装购物网站:Trendy Golf
2020/01/10 全球购物
Deichmann英国:德国鞋类零售商
2021/01/30 全球购物
迎新晚会主持词
2014/03/24 职场文书
竞选学生会主席演讲稿
2014/04/24 职场文书
敬老月活动总结
2014/08/28 职场文书
单位委托书
2014/10/15 职场文书
2014年高校辅导员工作总结
2014/12/09 职场文书
小学生作文批改评语
2014/12/25 职场文书
2015年大班保育员工作总结
2015/05/18 职场文书
2015年幼儿园学前班工作总结
2015/05/18 职场文书
婚庆司仪开场白
2015/05/29 职场文书