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 25 Python
在MAC上搭建python数据分析开发环境
Jan 26 Python
Python编程中对super函数的正确理解和用法解析
Jul 02 Python
利用Python读取文件的四种不同方法比对
May 18 Python
Python实现网站注册验证码生成类
Jun 08 Python
使用Python实现从各个子文件夹中复制指定文件的方法
Oct 25 Python
详解Python数据可视化编程 - 词云生成并保存(jieba+WordCloud)
Mar 26 Python
如何更优雅地写python代码
Jul 02 Python
python3.6 tkinter实现屏保小程序
Jul 30 Python
TensorFlow2.0:张量的合并与分割实例
Jan 19 Python
Python enumerate内置库用法解析
Feb 24 Python
python处理json数据文件
Apr 11 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 session安全问题分析
2011/06/24 PHP
采用ThinkPHP中F方法实现快速缓存实例
2014/06/13 PHP
Zend Framework动作助手Redirector用法实例详解
2016/03/05 PHP
利用php实现一周之内自动登录存储机制(cookie、session、localStorage)
2016/10/31 PHP
yii2-GridView在开发中常用的功能及技巧总结
2017/01/07 PHP
php中输出json对象的值(实现方法)
2018/03/07 PHP
PHP设计模式之工厂模式(Factory Pattern)的讲解
2019/03/21 PHP
基于thinkphp5框架实现微信小程序支付 退款 订单查询 退款查询操作
2020/08/17 PHP
url 编码 js url传参中文乱码解决方案
2010/04/11 Javascript
location.search在客户端获取Url参数的方法
2010/06/08 Javascript
js Html结构转字符串形式显示代码
2011/11/15 Javascript
对于this和$(this)的个人理解
2013/09/08 Javascript
用简洁的jQuery方法toggleClass实现隔行换色
2014/10/22 Javascript
跨域资源共享 CORS 详解
2016/04/26 Javascript
基于JavaScript实现自定义滚动条
2017/01/25 Javascript
浅谈js中startsWith 函数不能在任何浏览器兼容的问题
2017/03/01 Javascript
深究AngularJS——ng-checked(回写:带真实案例代码)
2017/06/13 Javascript
使用webpack构建应用的方法步骤
2019/03/04 Javascript
Vue+elementUI实现多图片上传与回显功能(含回显后继续上传或删除)
2020/03/23 Javascript
Vue触发input选取文件点击事件操作
2020/08/07 Javascript
[01:44]《为梦想出发》—联想杯DOTA2完美世界全国高校联赛
2015/09/30 DOTA
Python+tkinter模拟“记住我”自动登录实例代码
2018/01/16 Python
pandas 实现将重复表格去重,并重新转换为表格的方法
2018/04/18 Python
pygame游戏之旅 载入小车图片、更新窗口
2018/11/20 Python
对python3中, print横向输出的方法详解
2019/01/28 Python
2019 Python最新面试题及答案16道题
2019/04/11 Python
python使用SQLAlchemy操作MySQL
2020/01/02 Python
python实现xlwt xlrd 指定条件给excel行添加颜色
2020/07/14 Python
List、Map、Set三个接口,存取元素时,各有什么特点?
2015/09/27 面试题
有关打架的检讨书
2014/01/25 职场文书
大学生的创业计划书就该这么写
2014/01/30 职场文书
网络教育自我鉴定
2014/02/04 职场文书
高一军训的心得体会
2014/09/01 职场文书
会计实训报告范文
2014/11/04 职场文书
2015年收银员个人工作总结
2015/04/01 职场文书
解决pytorch 损失函数中输入输出不匹配的问题
2021/06/05 Python