Python中的__SLOTS__属性使用示例


Posted in Python onFebruary 18, 2015

看python社区大妈组织的内容里边有一篇讲python内存优化的,用到了__slots__。然后查了一下,总结一下。感觉非常有用

python类在进行实例化的时候,会有一个__dict__属性,里边有可用的实例属性名和值。声明__slots__后,实例就只会含有__slots__里有的属性名。

# coding: utf-8
 
 
class A(object):
  x = 1
 
  def __init__(self):
    self.y = 2
 
a = A()
print a.__dict__
print(a.x, a.y)
a.x = 10
a.y = 10
print(a.x, a.y)
 
 
class B(object):
  __slots__ = ('x', 'y')
  x = 1
  z = 2
 
  def __init__(self):
    self.y = 3
    # self.m = 5 # 这个是不成功的
 
 
b = B()
# print(b.__dict__)
print(b.x, b.z, b.y)
# b.x = 10
# b.z = 10
b.y = 10
print(b.y)
 
 
class C(object):
  __slots__ = ('x', 'z')
  x = 1
 
  def __setattr__(self, name, val):
    if name in C.__slots__:
      object.__setattr__(self, name, val)
 
  def __getattr__(self, name):
    return "Value of %s" % name
 
 
c = C()
print(c.__dict__)
print(c.x)
print(c.y)
# c.x = 10
c.z = 10
c.y = 10
print(c.z, c.y)
c.z = 100
print(c.z)
{'y': 2}
(1, 2)
(10, 10)
(1, 2, 3)
10
Value of __dict__
1
Value of y
(10, 'Value of y')
100

Python 相关文章推荐
python实现画一颗树和一片森林
Jun 25 Python
对numpy中的数组条件筛选功能详解
Jul 02 Python
python实现彩票系统
Jun 28 Python
python实现反转部分单向链表
Sep 27 Python
Python实现的拉格朗日插值法示例
Jan 08 Python
利用Pandas和Numpy按时间戳将数据以Groupby方式分组
Jul 22 Python
python2.7实现复制大量文件及文件夹资料
Aug 31 Python
Python 跨.py文件调用自定义函数说明
Jun 01 Python
Python 发送邮件方法总结
Aug 10 Python
Python从MySQL数据库中面抽取试题,生成试卷
Jan 14 Python
PyCharm+Miniconda3安装配置教程详解
Feb 16 Python
python使用opencv对图像添加噪声(高斯/椒盐/泊松/斑点)
Apr 06 Python
Python contextlib模块使用示例
Feb 18 #Python
Python中使用Inotify监控文件实例
Feb 14 #Python
Python中实现的RC4算法
Feb 14 #Python
Python脚本实现网卡流量监控
Feb 14 #Python
Centos5.x下升级python到python2.7版本教程
Feb 14 #Python
Python脚本实现DNSPod DNS动态解析域名
Feb 14 #Python
Python压缩和解压缩zip文件
Feb 14 #Python
You might like
初学者入门:细述PHP4的核心Zend
2006/09/05 PHP
PHP获取网站域名和地址的代码
2008/08/17 PHP
YII Framework框架教程之使用YIIC快速创建YII应用详解
2016/03/15 PHP
使用mouse事件实现简单的鼠标经过特效
2015/01/30 Javascript
jquery插件之文字间歇自动向上滚动效果代码
2016/02/25 Javascript
BootStrap实用代码片段之一
2016/03/22 Javascript
jQuery内容折叠效果插件用法实例分析(附demo源码)
2016/04/28 Javascript
Chrome不支持showModalDialog模态对话框和无法返回returnValue问题的解决方法
2016/10/30 Javascript
Mobile Web开发基础之四--处理手机设备的横竖屏问题
2017/08/11 Javascript
js实现会跳动的日历效果(完整实例)
2017/10/18 Javascript
JavaScript实现的超简单计算器功能示例
2017/12/23 Javascript
使用JS判断移动端手机横竖屏状态
2018/07/30 Javascript
如何用JavaScript实现功能齐全的单链表详解
2019/02/11 Javascript
easyUI使用分页过滤器对数据进行分页操作实例分析
2020/06/01 Javascript
[47:46]完美世界DOTA2联赛 Magma vs GXR 第三场 11.07
2020/11/10 DOTA
自己使用总结Python程序代码片段
2015/06/02 Python
机器学习的框架偏向于Python的13个原因
2017/12/07 Python
Python tkinter的grid布局及Text动态显示方法
2018/10/11 Python
解决pyinstaller打包exe文件出现命令窗口一闪而过的问题
2018/10/31 Python
对python opencv 添加文字 cv2.putText 的各参数介绍
2018/12/05 Python
Django ORM 聚合查询和分组查询实现详解
2019/08/09 Python
用Python调用win命令行提高工作效率的实例
2019/08/14 Python
html5+css如何实现中间大两头小的轮播效果
2018/12/06 HTML / CSS
美国现代家具购物网站:LexMod
2019/01/09 全球购物
澳洲CFL商城:CHEMIST FOR LESS(中文)
2021/02/28 全球购物
广州地球村科技数据库题目
2016/04/25 面试题
餐饮业的创业计划书范文
2013/12/26 职场文书
保险经纪人求职信
2014/03/11 职场文书
简单租房协议书范本
2014/08/20 职场文书
学习三严三实心得体会
2014/10/13 职场文书
工作年限证明模板
2014/11/01 职场文书
护士求职自荐信范文
2015/03/04 职场文书
工作年限证明模板
2015/06/15 职场文书
redis三种高可用方式部署的实现
2021/05/11 Redis
Windows安装Anaconda3的方法及使用过程详解
2021/06/11 Python
Vue.Draggable实现交换位置
2022/04/07 Vue.js