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处理文件目录的相关方法
Oct 16 Python
python探索之BaseHTTPServer-实现Web服务器介绍
Oct 28 Python
获取python文件扩展名和文件名方法
Feb 02 Python
解决Python 中英文混输格式对齐的问题
Jul 16 Python
python中pytest收集用例规则与运行指定用例详解
Jun 27 Python
浅谈Python_Openpyxl使用(最全总结)
Sep 05 Python
Python搭建代理IP池实现接口设置与整体调度
Oct 27 Python
python中urllib.request和requests的使用及区别详解
May 05 Python
详解pandas.DataFrame.plot() 画图函数
Jun 14 Python
如何利用python读取micaps文件详解
Oct 18 Python
Python办公自动化PPT批量转换操作
Sep 15 Python
关于的python五子棋的算法
May 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+javascript制作带提示的验证码源码分享
2014/05/28 PHP
简单谈谈PHP中的include、include_once、require以及require_once语句
2016/04/23 PHP
PHP生成各种随机验证码的方法总结【附demo源码】
2017/06/05 PHP
thinkphp诸多限制条件下如何getshell详解
2020/12/09 PHP
Aster vs KG BO3 第一场2.19
2021/03/10 DOTA
js onclick事件传参讲解
2013/11/06 Javascript
常规表格多表头查询示例
2014/02/21 Javascript
神奇!js+CSS+DIV实现文字颜色渐变效果
2016/03/16 Javascript
JavaScript知识点总结(十一)之js中的Object类详解
2016/05/31 Javascript
特殊日期提示功能的实现方法
2016/06/16 Javascript
jQuery插件扩展实例【添加回调函数】
2016/11/26 Javascript
ES6使用let命令更简单的实现块级作用域实例分析
2017/03/31 Javascript
基于AGS JS开发自定义贴图图层
2017/03/31 Javascript
使用javascript做在线算法编程
2018/05/25 Javascript
Vue.js单向绑定和双向绑定实例分析
2018/08/14 Javascript
JavaScript ES2019中的8个新特性详解
2019/02/20 Javascript
关于vue-cli 3配置打包优化要点(推荐)
2019/04/22 Javascript
Nuxt使用Vuex的方法示例
2019/09/06 Javascript
JavaScript用document.write()输出换行的示例代码
2020/11/26 Javascript
vue前端和Django后端如何查询一定时间段内的数据
2021/02/28 Vue.js
Python实现发送email的几种常用方法
2014/08/18 Python
Python引用类型和值类型的区别与使用解析
2017/10/17 Python
Python实现的IP端口扫描工具类示例
2019/02/15 Python
实例详解python函数的对象、函数嵌套、名称空间和作用域
2019/05/31 Python
python解压TAR文件至指定文件夹的实例
2019/06/10 Python
python爬虫神器Pyppeteer入门及使用
2019/07/13 Python
详解python 条件语句和while循环的实例代码
2020/12/28 Python
世界最大域名注册商:GoDaddy
2016/07/24 全球购物
英国健身仓库:Bodybuilding Warehouse
2019/03/06 全球购物
香港艺人陈冠希创办的潮流品牌:JUICESTORE
2021/03/04 全球购物
OSPF有什么优点?为什么OSPF比RIP收敛快?
2013/02/13 面试题
Linux如何命名文件--使用文件名时应注意
2014/05/29 面试题
高中生毕业自我鉴定
2013/10/10 职场文书
会计求职简历自我评价
2015/03/10 职场文书
教师节主题班会方案
2015/08/17 职场文书
接收函
2019/04/22 职场文书