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 10 Python
Python中的下划线详解
Jun 24 Python
python中偏函数partial用法实例分析
Jul 08 Python
在Python的Django框架中调用方法和处理无效变量
Jul 15 Python
python获取指定时间差的时间实例详解
Apr 11 Python
Python编程实现两个文件夹里文件的对比功能示例【包含内容的对比】
Jun 20 Python
python初学之用户登录的实现过程(实例讲解)
Dec 23 Python
python3实现字符串的全排列的方法(无重复字符)
Jul 07 Python
Python QQBot库的QQ聊天机器人
Jun 19 Python
如何将 awk 脚本移植到 Python
Dec 09 Python
python的reverse函数翻转结果为None的问题
May 11 Python
对Pytorch 中的contiguous理解说明
Mar 03 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 Pear 安装及使用
2009/03/19 PHP
10个实用的PHP正则表达式汇总
2014/10/23 PHP
php的debug相关函数用法示例
2016/07/11 PHP
phpinfo无法显示的原因及解决办法
2019/02/15 PHP
解决FLASH需要点击激活的代码
2006/12/20 Javascript
js 时间函数应用加、减、比较、格式转换的示例代码
2013/08/23 Javascript
解决js中window.open弹出的是上次的缓存页面问题
2013/12/29 Javascript
JavaScript闭包详解
2015/02/02 Javascript
javascript正则表达式中的replace方法详解
2015/04/20 Javascript
在JavaScript中处理字符串之link()方法的使用
2015/06/08 Javascript
浅谈JS中的!=、== 、!==、===的用法和区别
2016/09/24 Javascript
浅谈vue中数据双向绑定的实现原理
2017/09/14 Javascript
Angular 组件之间的交互的示例代码
2018/03/24 Javascript
three.js实现炫酷的全景3D重力感应
2018/12/30 Javascript
vue中keep-alive、activated的探讨和使用详解
2020/07/26 Javascript
详尽讲述用Python的Django框架测试驱动开发的教程
2015/04/22 Python
python中pass语句用法实例分析
2015/04/30 Python
Python黑帽编程 3.4 跨越VLAN详解
2016/09/28 Python
详解Python实现多进程异步事件驱动引擎
2017/08/25 Python
[原创]Python入门教程2. 字符串基本操作【运算、格式化输出、常用函数】
2018/10/29 Python
Python 控制终端输出文字的实例
2019/07/12 Python
使用matplotlib绘制图例标签中带有公式的图
2019/12/13 Python
Python使用20行代码实现微信聊天机器人
2020/06/05 Python
Python模拟键盘输入自动登录TGP
2020/11/27 Python
CK巴西官方网站:Calvin Klein巴西
2019/07/19 全球购物
电子商务专业在校生实习自我鉴定
2013/09/29 职场文书
大学生涯自我鉴定
2014/01/16 职场文书
高三学习决心书
2014/03/11 职场文书
母亲节感恩活动记录
2014/03/16 职场文书
《画》教学反思
2014/04/14 职场文书
护校行动方案
2014/05/31 职场文书
群众路线个人自我剖析材料
2014/10/07 职场文书
2015年检验科工作总结
2015/04/27 职场文书
2015年质检工作总结
2015/05/04 职场文书
每日六道java新手入门面试题,通往自由的道路
2021/06/30 Java/Android
Python使用Beautiful Soup(BS4)库解析HTML和XML
2022/06/05 Python