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 相关文章推荐
使用C#配合ArcGIS Engine进行地理信息系统开发
Feb 19 Python
python实现决策树
Dec 21 Python
详解Python 实现元胞自动机中的生命游戏(Game of life)
Jan 27 Python
Odoo中如何生成唯一不重复的序列号详解
Feb 10 Python
Python图像滤波处理操作示例【基于ImageFilter类】
Jan 03 Python
python自定义函数实现一个数的三次方计算方法
Jan 20 Python
详解Python做一个名片管理系统
Mar 14 Python
python实现ip代理池功能示例
Jul 05 Python
在python image 中安装中文字体的实现方法
Aug 22 Python
django框架ModelForm组件用法详解
Dec 11 Python
Python 实现向word(docx)中输出
Feb 13 Python
梳理总结Python开发中需要摒弃的18个坏习惯
Jan 22 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代码将360浏览器导出的favdb的sqlite数据库文件转换为html
2015/12/09 PHP
WordPress后台中实现图片上传功能的实例讲解
2016/01/11 PHP
PHP控制反转(IOC)和依赖注入(DI)
2017/03/13 PHP
javascript中的array数组使用技巧
2010/01/31 Javascript
Jquery网页出现的乱码问题的三种解决方法
2013/06/30 Javascript
js使用removeChild方法动态删除div元素
2014/08/01 Javascript
分享经典的JavaScript开发技巧
2015/11/21 Javascript
基于JavaScript实现焦点图轮播效果
2017/03/27 Javascript
利用node.js如何搭建一个简易的即时响应服务器
2017/05/28 Javascript
javascript基本常用排序算法解析
2017/09/27 Javascript
vue中引用阿里字体图标的方法
2018/02/10 Javascript
详解使用create-react-app快速构建React开发环境
2018/05/16 Javascript
JavaScript门道之标准库
2018/05/26 Javascript
微信小程序自定义可滑动日历界面
2018/12/28 Javascript
其实你可以少写点if else与switch(推荐)
2019/01/10 Javascript
Python打包可执行文件的方法详解
2016/09/19 Python
Windows 8.1 64bit下搭建 Scrapy 0.22 环境
2018/11/18 Python
Python二叉树的镜像转换实现方法示例
2019/03/06 Python
浅谈Python爬虫基本套路
2019/03/25 Python
如何使用pyinstaller打包32位的exe程序
2019/05/26 Python
通过python实现随机交换礼物程序详解
2019/07/10 Python
解决pandas展示数据输出时列名不能对齐的问题
2019/11/18 Python
Python 基于wxpy库实现微信添加好友功能(简洁)
2019/11/29 Python
女士时装鞋:Chinese Laundry
2018/08/29 全球购物
KARATOV珠宝在线商店:俄罗斯珠宝品牌
2019/03/13 全球购物
党支部承诺书范文
2014/03/28 职场文书
门前三包责任书
2014/04/15 职场文书
银行爱岗敬业演讲稿
2014/05/05 职场文书
民主评议党员总结
2014/10/20 职场文书
整改报告怎么写
2014/11/06 职场文书
消夏晚会主持词
2015/06/30 职场文书
2016入党培训心得体会范文
2016/01/08 职场文书
Python基础之字符串格式化详解
2021/04/21 Python
Spring Boot 实现敏感词及特殊字符过滤处理
2021/06/29 Java/Android
java解析XML详解
2021/07/09 Java/Android
vue/cli 配置动态代理无需重启服务的方法
2022/05/20 Vue.js