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 24 Python
Python实现Smtplib发送带有各种附件的邮件实例
Jun 05 Python
对Python3中的print函数以及与python2的对比分析
May 02 Python
Linux下Python安装完成后使用pip命令的详细教程
Nov 22 Python
python读取目录下所有的jpg文件,并显示第一张图片的示例
Jun 13 Python
python移位运算的实现
Jul 15 Python
Python3 批量扫描端口的例子
Jul 25 Python
查看Python依赖包及其版本号信息的方法
Aug 13 Python
python实现根据文件格式分类
Oct 31 Python
利用python如何实现猫捉老鼠小游戏
Dec 04 Python
python3.9.1环境安装的方法(图文)
Feb 02 Python
4种方法python批量修改替换列表中元素
Apr 07 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 daddslashes()和 saddslashes()有哪些区别分析
2012/10/26 PHP
深入PHP autoload机制的详解
2013/06/09 PHP
php使用QueryList轻松采集js动态渲染页面方法
2018/09/11 PHP
基于Bootstrap+jQuery.validate实现Form表单验证
2014/12/16 Javascript
JavaScript实现的双向跨域插件分享
2015/01/31 Javascript
把Node.js程序加入服务实现随机启动
2015/06/25 Javascript
浅谈JavaScript异常处理语句
2015/06/26 Javascript
JS组件Bootstrap实现弹出框效果代码
2016/04/26 Javascript
微信小程序 获取微信OpenId详解及实例代码
2016/10/31 Javascript
将json转换成struts参数的方法
2016/11/08 Javascript
详解使用grunt完成requirejs的合并压缩和js文件的版本控制
2017/03/02 Javascript
微信小程序之数据双向绑定与数据操作
2017/05/12 Javascript
JS简单获取并修改input文本框内容的方法示例
2018/04/08 Javascript
JS实现的简单折叠展开动画效果示例
2018/04/28 Javascript
linux 后台运行node服务指令方法
2018/05/23 Javascript
JS+HTML实现的圆形可点击区域示例【3种方法】
2018/08/01 Javascript
angularjs使用div模拟textarea文本框的方法
2018/10/02 Javascript
nuxt中使用路由守卫的方法步骤
2019/01/27 Javascript
Vue项目实现换肤功能的一种方案分析
2019/08/28 Javascript
[03:49]辉夜杯现场龙骑士COSER秀情商“我喜欢芬队!”
2015/12/27 DOTA
简单介绍Python中利用生成器实现的并发编程
2015/05/04 Python
python实现读取excel写入mysql的小工具详解
2017/11/20 Python
python3之模块psutil系统性能信息使用
2018/05/30 Python
Python爬虫常用库的安装及其环境配置
2018/09/19 Python
关于Python3爬虫利器Appium的安装步骤
2020/07/29 Python
如何通过python计算圆周率PI
2020/11/11 Python
CSS3盒子模型详解
2013/04/24 HTML / CSS
HTML5网页音乐播放器的示例代码
2017/11/09 HTML / CSS
爱国卫生月实施方案
2014/02/21 职场文书
尊师重教演讲稿
2014/09/04 职场文书
小学生国庆65周年演讲稿范文(2篇)
2014/09/21 职场文书
专职安全员岗位职责
2015/04/11 职场文书
面试复试通知单
2015/04/24 职场文书
暖春观后感
2015/06/08 职场文书
《自己去吧》教学反思
2016/02/16 职场文书
redis 存储对象的方法对比分析
2021/08/02 Redis