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 相关文章推荐
Mac中升级Python2.7到Python3.5步骤详解
Apr 27 Python
python中模块查找的原理与方法详解
Aug 11 Python
Python面向对象总结及类与正则表达式详解
Apr 18 Python
Python3.5装饰器典型案例分析
Apr 30 Python
Python+Pyqt实现简单GUI电子时钟
Feb 22 Python
解决Python对齐文本字符串问题
Aug 28 Python
Python实现串口通信(pyserial)过程解析
Sep 25 Python
python socket 聊天室实例代码详解
Nov 14 Python
Python版中国省市经纬度
Feb 11 Python
django项目中新增app的2种实现方法
Apr 01 Python
python制作一个简单的gui 数据库查询界面
Nov 19 Python
python xlsxwriter模块的使用
Dec 24 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 sprintf()函数让你的sql操作更安全
2008/07/23 PHP
php将会员数据导入到ucenter的代码
2010/07/18 PHP
VIM中设置php自动缩进为4个空格的方法详解
2013/06/14 PHP
在Yii2特定页面如何禁用调试工具栏Debug Toolbar详解
2017/08/07 PHP
php unlink()函数使用教程
2018/07/12 PHP
Extjs ajax同步请求时post方式参数发送方式
2009/08/05 Javascript
js event事件的传递与冒泡处理
2009/12/06 Javascript
js parentElement和offsetParent之间的区别
2010/03/23 Javascript
JavaScript弹出窗口方法汇总
2014/08/12 Javascript
js实现登陆遮罩效果的方法
2015/07/28 Javascript
jQuery实现获取隐藏div高度的方法示例
2017/02/09 Javascript
JavaScript实现左右下拉框动态增删示例
2017/03/09 Javascript
Mui使用jquery并且使用点击跳转新窗口的实例
2017/08/19 jQuery
浅谈VUE单页应用首屏加载速度优化方案
2018/08/28 Javascript
vue实现微信分享功能
2018/11/28 Javascript
微信小程序地图导航功能实现完整源代码附效果图(推荐)
2019/04/28 Javascript
简单介绍Python中的filter和lambda函数的使用
2015/04/07 Python
Python3编程实现获取阿里云ECS实例及监控的方法
2017/08/18 Python
Python中协程用法代码详解
2018/02/10 Python
Python 列表的清空方式
2020/01/13 Python
手把手教你用纯css3实现轮播图效果实例
2017/05/04 HTML / CSS
HTML5中Canvas与SVG的画图原理比较
2013/01/16 HTML / CSS
针对HTML5的Web Worker使用攻略
2015/07/12 HTML / CSS
深入浅析HTML5中的SVG
2015/11/27 HTML / CSS
英国网上香水店:Fragrance Direct
2016/07/20 全球购物
深深扎根运动世界的生活品牌:Tillys
2017/10/30 全球购物
HomeAway英国:全球领先的度假租赁在线市场
2020/02/03 全球购物
EJB面试题
2015/07/28 面试题
新郎新娘婚礼答谢词
2014/01/11 职场文书
党支部书记岗位责任制
2014/02/11 职场文书
天坛导游词
2015/02/02 职场文书
2015年教师国培感言
2015/08/01 职场文书
2016新党章学习心得体会
2016/01/15 职场文书
python爬虫之爬取笔趣阁小说
2021/04/22 Python
python神经网络编程之手写数字识别
2021/05/08 Python
JavaScript canvas实现流星特效
2021/05/20 Javascript