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实现短网址ShortUrl的Hash运算实例讲解
Aug 10 Python
Pandas读取MySQL数据到DataFrame的方法
Jul 25 Python
Python lambda表达式用法实例分析
Dec 25 Python
如何在Python中实现goto语句的方法
May 18 Python
numpy中的meshgrid函数的使用
Jul 31 Python
Django框架教程之中间件MiddleWare浅析
Dec 29 Python
python实现word文档批量转成自定义格式的excel文档的思路及实例代码
Feb 21 Python
python3安装OCR识别库tesserocr过程图解
Apr 02 Python
python PIL模块的基本使用
Sep 29 Python
浅析Python中字符串的intern机制
Oct 03 Python
Python numpy大矩阵运算内存不足如何解决
Nov 19 Python
Python 数据可视化之Seaborn详解
Nov 02 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 Smarty生成EXCEL文档的代码
2008/08/23 PHP
PHP的switch判断语句的“高级”用法详解
2014/10/01 PHP
php使用Cookie控制访问授权的方法
2015/01/21 PHP
基于php实现的验证码小程序
2016/12/13 PHP
yii2.0框架实现上传excel文件后导入到数据库的方法示例
2020/04/13 PHP
JavaScript高级程序设计 阅读笔记(四) ECMAScript中的类型转换
2012/02/27 Javascript
Javascript的严格模式strict mode详细介绍
2014/06/06 Javascript
js实现类似于add(1)(2)(3)调用方式的方法
2015/03/04 Javascript
js clearInterval()方法的定义和用法
2015/11/11 Javascript
JavaScript中的事件委托及好处
2016/07/12 Javascript
原生js开发的日历插件
2017/02/04 Javascript
JavaScript 中 apply 、call 的详解
2017/03/21 Javascript
vue 组件 全局注册和局部注册的实现
2018/02/28 Javascript
浅谈vue项目可以从哪些方面进行优化
2018/05/05 Javascript
node全局变量__dirname与__filename的区别
2019/01/14 Javascript
Map与WeakMap类型在JavaScript中的使用详解
2020/11/18 Javascript
[48:56]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 VG vs KG
2018/03/31 DOTA
Python3写入文件常用方法实例分析
2015/05/22 Python
Python WXPY实现微信监控报警功能的代码
2017/10/20 Python
python3爬虫怎样构建请求header
2018/12/23 Python
python3.7简单的爬虫实例详解
2019/07/08 Python
python numpy库np.percentile用法说明
2020/06/08 Python
英国度假别墅预订:Sykes Cottages
2017/06/12 全球购物
英国复古和经典球衣网站:Vintage Football Shirts
2018/10/05 全球购物
Myholidays美国:在线旅游网站
2019/08/16 全球购物
日语系毕业生推荐信
2013/11/11 职场文书
运动会方阵解说词
2014/02/12 职场文书
六一亲子活动总结
2014/07/01 职场文书
音乐之声音乐广播稿
2014/09/10 职场文书
大学生自我推荐信范文
2015/03/24 职场文书
保险公司岗前培训工作总结
2015/10/24 职场文书
家庭教育培训学习心得体会
2016/01/14 职场文书
学习杨善洲同志先进事迹心得体会
2016/01/23 职场文书
2016年小学“我们的节日·中秋节”活动总结
2016/04/05 职场文书
用position:sticky完美解决小程序吸顶问题的实现方法
2021/04/24 HTML / CSS
python_tkinter事件类型详情
2022/03/20 Python