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之网站的结构
Oct 24 Python
在Python的Flask框架中验证注册用户的Email的方法
Sep 02 Python
python 回调函数和回调方法的实现分析
Mar 23 Python
Python导入模块时遇到的错误分析
Aug 30 Python
python取代netcat过程分析
Feb 10 Python
python数字图像处理之高级形态学处理
Apr 27 Python
基于python批量处理dat文件及科学计算方法详解
May 08 Python
Python 3.3实现计算两个日期间隔秒数/天数的方法示例
Jan 07 Python
Python类的继承用法示例
Jan 31 Python
python区分不同数据类型的方法
Oct 14 Python
Python3并发写文件与Python对比
Nov 20 Python
Python直接赋值及深浅拷贝原理详解
Sep 05 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+DBM的同学录程序(3)
2006/10/09 PHP
PHP+XML 制作简单的留言本 图文教程
2009/11/02 PHP
php实现简单洗牌算法
2013/06/18 PHP
网站404页面3秒后跳到首页的实例代码
2013/08/16 Javascript
javascript代码运行不出来执行错误的可能情况整理
2013/10/18 Javascript
jQuery中before()方法用法实例
2014/12/25 Javascript
JavaScript、tab切换完整版(自动切换、鼠标移入停止、移开运行)
2016/01/05 Javascript
Jquery为DIV添加click事件的简单实例
2016/06/02 Javascript
JavaScript简单获取系统当前时间完整示例
2016/08/02 Javascript
jQuery实现的checkbox级联选择下拉菜单效果示例
2016/12/26 Javascript
基于jQuery实现顶部导航栏功能
2016/12/27 Javascript
JavaScript严格模式详解
2017/01/16 Javascript
Bootstrap进度条与AJAX后端数据传递结合使用实例详解
2017/04/23 Javascript
基于BootStrap multiselect.js实现的下拉框联动效果
2017/07/28 Javascript
node.js利用mongoose获取mongodb数据的格式化问题详解
2017/10/06 Javascript
jQuery实现html双向绑定功能示例
2017/10/09 jQuery
通过vue-cli来学习修改Webpack多环境配置和发布问题
2017/12/22 Javascript
简单理解Vue中的nextTick方法
2018/01/30 Javascript
深入了解JavaScript代码覆盖
2019/06/13 Javascript
layui 富文本图片上传接口与普通按钮 文件上传接口的例子
2019/09/23 Javascript
js实现石头剪刀布游戏
2020/10/11 Javascript
python中使用百度音乐搜索的api下载指定歌曲的lrc歌词
2014/07/18 Python
Python 给某个文件名添加时间戳的方法
2018/10/16 Python
Python实现分段线性插值
2018/12/17 Python
python对列进行平移变换的方法(shift)
2019/01/10 Python
python 使用xlsxwriter循环向excel中插入数据和图片的操作
2021/01/01 Python
css3让div随鼠标移动而抖动起来
2014/02/10 HTML / CSS
彪马俄罗斯官网:PUMA俄罗斯
2019/07/13 全球购物
财务会计专业毕业生自荐信
2013/10/19 职场文书
自查自纠工作总结
2014/10/15 职场文书
2014年工作总结与下年工作计划
2014/11/27 职场文书
酒会开场白大全
2015/06/01 职场文书
2019暑假学生安全口号
2019/06/27 职场文书
Redis缓存-序列化对象存储乱码问题的解决
2021/06/21 Redis
css3中2D转换之有趣的transform形变效果
2022/02/24 HTML / CSS
python解析json数据
2022/04/29 Python