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中给List添加元素的4种方法分享
Nov 28 Python
在Python中使用NLTK库实现对词干的提取的教程
Apr 08 Python
python将ansible配置转为json格式实例代码
May 15 Python
Python实现对文件进行单词划分并去重排序操作示例
Jul 10 Python
Flask入门之上传文件到服务器的方法示例
Jul 18 Python
python将字符串list写入excel和txt的实例
Jul 20 Python
vscode 配置 python3开发环境的方法
Sep 19 Python
python实现简单井字棋游戏
Mar 04 Python
导致python中import错误的原因是什么
Jul 01 Python
Python容器类型公共方法总结
Aug 19 Python
用OpenCV进行年龄和性别检测的实现示例
Jan 29 Python
如何使用python包中的sched事件调度器
Apr 30 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
2020显卡排行榜天梯图 显卡天梯图2020年3月最新版
2020/04/02 数码科技
php发送post请求的三种方法
2014/02/11 PHP
php通过rmdir删除目录的简单用法
2015/03/18 PHP
php计算整个目录大小的方法
2015/06/19 PHP
教大家制作简单的php日历
2015/11/17 PHP
PHP编写文件多服务器同步程序
2016/07/02 PHP
jQuery html()等方法介绍
2009/11/18 Javascript
javascript 弹出层组件(升级版)
2011/05/12 Javascript
javascript结合html5 canvas实现(可调画笔颜色/粗细/橡皮)的涂鸦板
2013/04/27 Javascript
jquery阻止后续事件只执行第一个事件
2014/07/24 Javascript
基于jQuery实现交互体验社会化分享代码附源码下载
2016/01/04 Javascript
JavaScript实现窗口抖动效果
2016/10/19 Javascript
原生js验证简洁注册登录页面
2016/12/17 Javascript
浅谈VUE防抖与节流的最佳解决方案(函数式组件)
2019/05/22 Javascript
vue监听用户输入和点击功能
2019/09/27 Javascript
Vue实现导航栏菜单
2020/08/19 Javascript
vue项目打包为APP,静态资源正常显示,但API请求不到数据的操作
2020/09/12 Javascript
[49:20]VG vs TNC Supermajor小组赛B组败者组决赛 BO3 第二场 6.2
2018/06/03 DOTA
pycharm 使用心得(一)安装和首次使用
2014/06/05 Python
Python爬虫信息输入及页面的切换方法
2018/05/11 Python
python代码编写计算器小程序
2020/03/30 Python
python 字符串追加实例
2019/07/20 Python
简单了解python gevent 协程使用及作用
2019/07/22 Python
python3 deque 双向队列创建与使用方法分析
2020/03/24 Python
python+requests接口自动化框架的实现
2020/08/31 Python
H5 canvas中width、height和style的宽高区别详解
2018/11/02 HTML / CSS
美国儿童运动鞋和服装零售商:Kids Foot Locker
2017/08/05 全球购物
幼儿园中秋节活动方案
2014/02/06 职场文书
学生手册家长评语
2014/02/10 职场文书
期终自我鉴定
2014/02/17 职场文书
个人安全生产承诺书
2014/05/22 职场文书
超市促销活动总结
2014/07/01 职场文书
校长个人总结
2015/03/03 职场文书
2019职场单身人才调研报告:互联网行业单身比例最高
2019/08/07 职场文书
Css预编语言及区别详解
2021/04/25 HTML / CSS
Python采集壁纸并实现炫轮播
2022/04/30 Python