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中数据解析
May 05 Python
Python2中的raw_input() 与 input()
Jun 12 Python
Python脚本实现Web漏洞扫描工具
Oct 25 Python
python 文件转成16进制数组的实例
Jul 09 Python
django用户登录和注销的实现方法
Jul 16 Python
python实现嵌套列表平铺的两种方法
Nov 08 Python
利用Django提供的ModelForm增删改数据的方法
Jan 06 Python
在python 中实现运行多条shell命令
Jan 07 Python
windows中安装Python3.8.0的实现方法
Nov 19 Python
python 实现按对象传值
Dec 26 Python
Python爬虫爬取百度搜索内容代码实例
Jun 05 Python
python 实现批量图片识别并翻译
Nov 02 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
中国的第一台收音机
2021/03/01 无线电
删除无限级目录与文件代码共享
2006/07/12 PHP
检测png图片是否完整的php代码
2010/09/06 PHP
20个PHP常用类库小结
2011/09/11 PHP
Android AsyncTack 异步任务实例详解
2016/11/02 PHP
prototype.js的Ajax对象
2006/09/23 Javascript
JavaScript类型转换方法及需要注意的问题小结(挺全面)
2010/11/11 Javascript
jQuery中ajax的load()方法用法实例
2014/12/26 Javascript
Javascript基础教程之数据类型 (布尔型 Boolean)
2015/01/18 Javascript
jQuery实现高亮显示的方法
2015/03/10 Javascript
jQuery获取页面元素绝对与相对位置的方法
2015/06/10 Javascript
详解JavaScript正则表达式中的global属性的使用
2015/06/16 Javascript
求js数组的最大值和最小值的四种方法
2017/03/03 Javascript
AngularJs导出数据到Excel的示例代码
2017/08/11 Javascript
vue.js绑定事件监听器示例【基于v-on事件绑定】
2018/07/07 Javascript
基于node.js实现爬虫的讲解
2019/02/18 Javascript
在vue和element-ui的table中实现分页复选功能
2019/12/04 Javascript
python共享引用(多个变量引用)示例代码
2013/12/04 Python
python静态方法实例
2015/01/14 Python
python绘制条形图方法代码详解
2017/12/19 Python
django多个APP的urls设置方法(views重复问题解决)
2019/07/19 Python
python循环输出三角形图案的例子
2019/11/22 Python
python3 自动打印出最新版本执行的mysql2redis实例
2020/04/09 Python
Tensorflow tf.nn.atrous_conv2d如何实现空洞卷积的
2020/04/20 Python
Python run()函数和start()函数的比较和差别介绍
2020/05/03 Python
canvas小画板之平滑曲线的实现
2020/08/12 HTML / CSS
英国高级健康和美容产品零售商:Life and Looks
2019/08/01 全球购物
给女儿的表扬信
2014/01/18 职场文书
小学生开学第一课活动方案
2014/03/27 职场文书
企业授权委托书范本
2014/09/22 职场文书
办公室主任个人对照检查材料思想汇报
2014/10/11 职场文书
朝花夕拾读书笔记
2015/06/29 职场文书
新学期开学标语2015
2015/07/16 职场文书
2015年小学重阳节活动总结
2015/07/29 职场文书
SQLServer2019 数据库环境搭建与使用的实现
2021/04/08 SQL Server
Python中threading库实现线程锁与释放锁
2021/05/17 Python