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 相关文章推荐
400多行Python代码实现了一个FTP服务器
May 10 Python
python调用java的Webservice示例
Mar 10 Python
python中stdout输出不缓存的设置方法
May 29 Python
web.py获取上传文件名的正确方法
Aug 26 Python
Python实现抓取城市的PM2.5浓度和排名
Mar 19 Python
安装dbus-python的简要教程
May 05 Python
python实现的简单抽奖系统实例
May 22 Python
Python 中包/模块的 `import` 操作代码
Apr 22 Python
pyinstaller打包程序exe踩过的坑
Nov 19 Python
python多线程实现代码(模拟银行服务操作流程)
Jan 13 Python
windows10环境下用anaconda和VScode配置的图文教程
Mar 30 Python
Python爬虫中urllib3与urllib的区别是什么
Jul 21 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连mysql和oracle数据库性能比较
2006/10/09 PHP
PHP判断是否有Get参数的方法
2014/05/05 PHP
PHP函数in_array()使用详解
2014/08/20 PHP
PHP基于imagick扩展实现合成图片的两种方法【附imagick扩展下载】
2017/11/14 PHP
PHP开启目录引索+fancyindex漂亮目录浏览带搜索功能
2019/09/23 PHP
菜单效果
2006/10/14 Javascript
javascript FormatNumber函数实现方法
2008/12/30 Javascript
关于 文本框默认值 的操作js代码
2012/01/12 Javascript
JS代码同步文本框内容的实例方法
2013/07/12 Javascript
JavaScript设计模式之原型模式(Object.create与prototype)介绍
2014/12/28 Javascript
javascript制作2048游戏
2015/03/30 Javascript
快速使用Bootstrap搭建传送带
2016/05/06 Javascript
JS实现用户注册时获取短信验证码和倒计时功能
2016/10/27 Javascript
纯js实现倒计时功能
2017/01/06 Javascript
jQuery使用方法
2017/02/04 Javascript
基于bootstrap按钮式下拉菜单组件的搜索建议插件
2017/03/25 Javascript
JS设计模式之数据访问对象模式的实例讲解
2017/09/30 Javascript
如何用Node写页面爬虫的工具集
2018/10/26 Javascript
一些可能会用到的Node.js面试题
2019/06/15 Javascript
JS实现随机抽取三人
2019/11/06 Javascript
javascript中正则表达式语法详解
2020/08/07 Javascript
解决vue侦听器watch,调用this时出现undefined的问题
2020/10/30 Javascript
vue element实现表格合并行数据
2020/11/30 Vue.js
Python判断变量是否已经定义的方法
2014/08/18 Python
Python自动化部署工具Fabric的简单上手指南
2016/04/19 Python
python如何派生内置不可变类型并修改实例化行为
2018/03/21 Python
python线程中同步锁详解
2018/04/27 Python
Python hashlib模块实例使用详解
2019/12/24 Python
tensorflow 固定部分参数训练,只训练部分参数的实例
2020/01/20 Python
Python并发爬虫常用实现方法解析
2020/11/19 Python
全球酒店预订网站:Hotels.com
2016/08/10 全球购物
亚马逊中国官方网站:amazon.cn
2017/05/25 全球购物
德国便宜的宠物店:Brekz.de
2020/10/23 全球购物
美术师范毕业生自荐信
2013/11/16 职场文书
2015年十一国庆节演讲稿
2015/03/20 职场文书
nginx 反向代理之 proxy_pass的实现
2021/03/31 Servers