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写的图片蜘蛛人代码
Aug 27 Python
在Django框架中伪造捕捉到的URLconf值的方法
Jul 18 Python
python通过加号运算符操作列表的方法
Jul 28 Python
Python编程实现的简单Web服务器示例
Jun 22 Python
Python获取系统所有进程PID及进程名称的方法示例
May 24 Python
python中redis查看剩余过期时间及用正则通配符批量删除key的方法
Jul 30 Python
Python过滤txt文件内重复内容的方法
Oct 21 Python
PyQt+socket实现远程操作服务器的方法示例
Aug 22 Python
python读取Excel表格文件的方法
Sep 02 Python
python selenium实现发送带附件的邮件代码实例
Dec 10 Python
Python中logging日志的四个等级和使用
Nov 17 Python
深度学习小工程练习之垃圾分类详解
Apr 14 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 判断变量类型实现代码
2009/10/23 PHP
php版微信小店调用api示例代码
2016/11/12 PHP
php源码的安装方法和实例
2019/09/26 PHP
JS实现的一个简单的Autocomplete自动完成例子
2014/04/16 Javascript
javascript函数中参数传递问题示例探讨
2014/07/31 Javascript
javascript框架设计读书笔记之种子模块
2014/12/02 Javascript
Yii2使用Bootbox插件实现自定义弹窗
2015/04/02 Javascript
浅析Javascript ES6新增值比较函数Object.is
2016/08/24 Javascript
微信小程序 教程之WXML
2016/10/18 Javascript
使用BootStrap实现悬浮窗口的效果
2016/12/13 Javascript
详解jQuery的表单验证插件--Validation
2016/12/21 Javascript
基于JavaScript实现窗口拖动效果
2017/01/18 Javascript
Bootstrap风格的zTree右键菜单
2017/02/17 Javascript
vue click.stop阻止点击事件继续传播的方法
2018/09/04 Javascript
jQuery实现模拟搜索引擎的智能提示功能简单示例
2019/01/27 jQuery
vue eslint简要配置教程详解
2019/07/26 Javascript
微信小程序 (地址选择1)--选取搜索地点并显示效果
2019/12/17 Javascript
关于javascript中的promise的用法和注意事项(推荐)
2021/01/15 Javascript
Python实现抓取网页并且解析的实例
2014/09/20 Python
python开发之tkinter实现图形随鼠标移动的方法
2015/11/11 Python
Django objects的查询结果转化为json的三种方式的方法
2018/11/07 Python
Scrapy-Redis结合POST请求获取数据的方法示例
2019/05/07 Python
Python编写打字训练小程序
2019/09/26 Python
在flask中使用python-dotenv+flask-cli自定义命令(推荐)
2020/01/05 Python
Canvas与图片压缩的示例代码
2017/11/28 HTML / CSS
英文版餐饮运营管理求职信
2013/11/06 职场文书
校园自助餐厅的创业计划书
2013/12/26 职场文书
物流司机岗位职责
2013/12/28 职场文书
《口技》教学反思
2014/02/21 职场文书
精神文明建设先进工作者事迹材料
2014/05/02 职场文书
行政专员求职信范文
2014/05/03 职场文书
班主任工作实习计划
2015/01/16 职场文书
一个独生女的故事观后感
2015/06/04 职场文书
志愿服务心得体会
2016/01/15 职场文书
MySQL慢查询的坑
2021/04/28 MySQL
通过feDisplacementMap和feImage实现水波特效
2022/04/24 HTML / CSS