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 相关文章推荐
通过mod_python配置运行在Apache上的Django框架
Jul 22 Python
深入解析Python中的集合类型操作符
Aug 19 Python
PyQt5实现拖放功能
Apr 25 Python
Python socket套接字实现C/S模式远程命令执行功能案例
Jul 06 Python
Python使用POP3和SMTP协议收发邮件的示例代码
Apr 16 Python
Python学习笔记之变量、自定义函数用法示例
May 28 Python
基于Python实现剪切板实时监控方法解析
Sep 11 Python
python用类实现文章敏感词的过滤方法示例
Oct 27 Python
详解python内置模块urllib
Sep 09 Python
Scrapy爬虫文件批量运行的实现
Sep 30 Python
如何用Matlab和Python读取Netcdf文件
Feb 19 Python
python opencv通过按键采集图片源码
May 20 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
PHP中ltrim与rtrim去除左右空格及特殊字符实例
2016/01/07 PHP
PHP strip_tags保留多个HTML标签的方法
2016/05/22 PHP
Yii2框架BootStrap样式的深入理解
2016/11/07 PHP
PHP面向对象五大原则之单一职责原则(SRP)详解
2018/04/04 PHP
Tinymce+jQuery.Validation使用产生的BUG
2010/03/29 Javascript
基于jquery实现图片上传本地预览功能
2016/01/08 Javascript
AngularJS转换响应内容
2016/01/27 Javascript
Bootstrap3制作搜索框样式的方法
2016/07/11 Javascript
深入浅出ES6新特性之函数默认参数和箭头函数
2016/08/01 Javascript
ES6中class类用法实例浅析
2017/04/06 Javascript
JavaScript手风琴页面制作
2017/05/17 Javascript
vue.js element-ui validate中代码不执行问题解决方法
2017/12/18 Javascript
详解JS数值Number类型
2018/02/07 Javascript
Vue 使用中的小技巧
2018/04/26 Javascript
Vue中使用的EventBus有生命周期
2018/07/12 Javascript
layer 刷新某个页面的实现方法
2019/09/05 Javascript
微信小程序添加插屏广告并设置显示频率(一天一次)
2019/12/06 Javascript
Vue实现点击当前行变色
2020/12/14 Vue.js
[40:16]TFT vs Mski Supermajor小组赛C组 BO3 第二场 6.3
2018/06/04 DOTA
windows下python和pip安装教程
2018/05/25 Python
python实现猜单词小游戏
2020/05/22 Python
钉钉群自定义机器人消息Python封装的实例
2019/02/20 Python
Python中内建模块collections如何使用
2020/05/27 Python
django下创建多个app并设置urls方法
2020/08/02 Python
彻底弄明白CSS3的Media Queries(跨平台设计)
2010/07/27 HTML / CSS
全球速卖通法国在线交易平台:AliExpress法国
2017/07/07 全球购物
哈萨克斯坦移动和数字技术在线商店:SatelOnline.kz
2020/09/04 全球购物
C/C++ 笔试、面试题目大汇总
2015/11/21 面试题
金融专业毕业生推荐信
2013/11/26 职场文书
工地标语大全
2014/06/18 职场文书
2015年财务工作总结范文
2015/03/31 职场文书
工伤劳动仲裁代理词
2015/05/25 职场文书
重阳节活动主持词
2015/07/04 职场文书
家庭教育教师培训学习体会
2016/01/14 职场文书
python神经网络 使用Keras构建RNN训练
2022/05/04 Python
Go语言编译原理之变量捕获
2022/08/05 Golang