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中shutil模块的常用文件操作函数用法示例
Jul 05 Python
Python 实现子类获取父类的类成员方法
Jan 11 Python
对Python中TKinter模块中的Label组件实例详解
Jun 14 Python
django将数组传递给前台模板的方法
Aug 06 Python
django-rest-swagger的优化使用方法
Aug 29 Python
通过实例简单了解Python中yield的作用
Dec 11 Python
python主线程与子线程的结束顺序实例解析
Dec 17 Python
解决Python import docx出错DLL load failed的问题
Feb 13 Python
django中related_name的用法说明
May 20 Python
Python-openCV开运算实例
Jul 05 Python
python自动从arxiv下载paper的示例代码
Dec 05 Python
Python  lambda匿名函数和三元运算符
Apr 19 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
解析如何去掉CodeIgniter URL中的index.php
2013/06/25 PHP
php获取目录所有文件并将结果保存到数组(实例)
2013/10/25 PHP
thinkPHP框架中执行事务的方法示例
2018/05/31 PHP
php和vue配合使用技巧和方法
2019/05/09 PHP
javascript编程起步(第二课)
2007/01/10 Javascript
用javascript getComputedStyle获取和设置style的原理
2008/10/10 Javascript
模拟多级复选框效果的jquery代码
2013/08/13 Javascript
ajax请求乱码的解决方法(中文乱码)
2014/04/10 Javascript
js表单提交和submit提交的区别实例分析
2015/12/10 Javascript
node.js实现快速截图
2016/08/27 Javascript
详解XMLHttpRequest(一)同步请求和异步请求
2016/09/14 Javascript
angular使用bootstrap方法手动启动的实例代码
2017/07/18 Javascript
vue2.0开发入门笔记之.vue文件的生成和使用
2017/09/19 Javascript
vue2.0s中eventBus实现兄弟组件通信的示例代码
2017/10/25 Javascript
官方推荐react-navigation的具体使用详解
2018/05/08 Javascript
vue非父子组件通信问题及解决方法
2018/06/11 Javascript
react实现同页面三级跳转路由布局
2019/09/26 Javascript
JS实现简单省市二级联动
2019/11/27 Javascript
vue 二维码长按保存和复制内容操作
2020/09/22 Javascript
Python的ORM框架中SQLAlchemy库的查询操作的教程
2015/04/25 Python
Python单链表简单实现代码
2016/04/27 Python
Python中super()函数简介及用法分享
2016/07/11 Python
Python中的支持向量机SVM的使用(附实例代码)
2019/06/26 Python
html5视频自动横过来自适应页面且点击播放功能的实现
2020/06/03 HTML / CSS
捷克移动配件网上商店:ProMobily.cz
2019/03/15 全球购物
Deichmann英国:德国鞋类零售商
2021/01/30 全球购物
linux面试相关问题
2012/08/11 面试题
分公司经理岗位职责
2013/11/11 职场文书
绘画专业自荐信范文
2014/02/23 职场文书
阳光体育活动总结
2014/04/30 职场文书
晚自修旷课检讨书怎么写
2014/11/17 职场文书
安全温馨提示语大全
2015/07/14 职场文书
导游词之云南省玉龙雪山
2019/12/19 职场文书
如何利用python和DOS获取wifi密码
2021/03/31 Python
golang goroutine顺序输出方式
2021/04/29 Golang
golang中的struct操作
2021/11/11 Golang