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计算最小优先级队列代码分享
Dec 18 Python
Python实现识别手写数字 Python图片读入与处理
Mar 23 Python
shell命令行,一键创建 python 模板文件脚本方法
Mar 20 Python
基于windows下pip安装python模块时报错总结
Jun 12 Python
判断python字典中key是否存在的两种方法
Aug 10 Python
解决python xlrd无法读取excel文件的问题
Dec 25 Python
pycharm 批量修改变量名称的方法
Aug 01 Python
Keras搭建自编码器操作
Jul 03 Python
Python用K-means聚类算法进行客户分群的实现
Aug 23 Python
python操作redis数据库的三种方法
Sep 10 Python
全面介绍python中很常用的单元测试框架unitest
Dec 14 Python
python 命令行传参方法总结
May 25 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编程中八种常见的文件操作方式
2006/11/19 PHP
PHP Zip压缩 在线对文件进行压缩的函数
2010/05/26 PHP
php创建sprite
2014/02/11 PHP
PHP队列用法实例
2014/11/05 PHP
PHP字符串比较函数strcmp()和strcasecmp()使用总结
2014/11/19 PHP
PHP实现微信网页授权开发教程
2016/01/19 PHP
浅谈laravel-admin form中的数据,在提交后,保存前,获取并进行编辑
2019/10/21 PHP
JavaScript 设计模式学习 Factory
2009/07/29 Javascript
js或者jquery判断图片是否加载完成实现代码
2013/03/20 Javascript
JS获取网页属性包括宽、高等等
2014/04/03 Javascript
jQuery异步验证用户名是否存在示例代码
2014/05/21 Javascript
AngularJs html compiler详解及示例代码
2016/09/01 Javascript
微信小程序 跳转方式总结
2017/04/20 Javascript
for循环 + setTimeout 结合一些示例(前端面试题)
2017/08/30 Javascript
vue实现图书管理demo详解
2017/10/17 Javascript
详解如何运行vue项目
2019/04/15 Javascript
微信小程序class封装http代码实例
2019/08/24 Javascript
下载安装setuptool和pip linux安装pip    
2014/01/24 Python
python使用cStringIO实现临时内存文件访问的方法
2015/03/26 Python
python 全局变量的import机制介绍
2017/09/07 Python
python 给DataFrame增加index行名和columns列名的实现方法
2018/06/08 Python
详解Django中六个常用的自定义装饰器
2018/07/04 Python
Python File(文件) 方法整理
2019/02/18 Python
Python实现ATM系统
2020/02/17 Python
详解Python中的路径问题
2020/09/02 Python
DKNY品牌官网:纽约大都会时尚风格
2016/10/20 全球购物
Probikekit日本:自行车套件,跑步和铁人三项装备
2017/04/03 全球购物
英国领先的亚洲旅游专家:Wendy Wu Tours
2018/01/21 全球购物
Amara德国:家居饰品、设计师品牌和豪华礼品
2019/05/20 全球购物
eHarmony英国:全球领先的认真恋爱约会平台之一
2020/11/16 全球购物
介绍一下.NET构架下remoting和webservice
2014/05/08 面试题
同步和异步有何异同,在什么情况下分别使用他们?
2012/12/28 面试题
办公室主任岗位职责
2013/11/08 职场文书
甜品店创业计划书
2014/09/21 职场文书
企业承诺书格式范文
2015/04/28 职场文书
小学语文教师研修日志
2015/11/13 职场文书