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编写分析Python程序性能的工具的教程
Apr 01 Python
从Python的源码浅要剖析Python的内存管理
Apr 16 Python
基于python 字符编码的理解
Sep 02 Python
Python框架Flask的基本数据库操作方法分析
Jul 13 Python
使用python Fabric动态修改远程机器hosts的方法
Oct 26 Python
详解Python 定时框架 Apscheduler原理及安装过程
Jun 14 Python
python实现文本进度条 程序进度条 加载进度条 单行刷新功能
Jul 03 Python
python操作openpyxl导出Excel 设置单元格格式及合并处理代码实例
Aug 27 Python
django model object序列化实例
Mar 13 Python
Python自动发送和收取邮件的方法
Aug 12 Python
python 两种方法删除空文件夹
Sep 29 Python
关于django python manage.py startapp 应用名出错异常原因解析
Dec 15 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中去掉字符串首尾空格的方法
2012/05/19 PHP
浅谈PHP检查数组中是否存在某个值 in_array 函数
2016/06/13 PHP
PHP生成指定范围内的N个不重复的随机数
2019/03/18 PHP
Laravel框架Eloquent ORM简介、模型建立及查询数据操作详解
2019/12/04 PHP
JQuery的Validation插件中Remote验证的中文问题
2010/07/26 Javascript
javascript jscroll模拟html元素滚动条
2012/12/18 Javascript
javascript实现tabs选项卡切换效果(扩展版)
2013/03/19 Javascript
JQuery页面图片切换和新闻列表滚动效果的具体实现
2013/09/26 Javascript
JavaScript实现弹出子窗口并传值给父窗口
2014/12/18 Javascript
深入理解JavaScript系列(36):设计模式之中介者模式详解
2015/03/04 Javascript
Sea.JS知识总结
2016/05/05 Javascript
纯js实现画一棵树的示例
2017/09/05 Javascript
浅谈Vue的加载顺序探讨
2017/10/25 Javascript
jQuery进阶实践之利用最优雅的方式如何写ajax请求
2017/12/20 jQuery
vuex2中使用mapGetters/mapActions报错的解决方法
2018/10/20 Javascript
React精髓!一篇全概括小结(急速)
2019/05/23 Javascript
gearman的安装启动及python API使用实例
2014/07/08 Python
深入理解Python中装饰器的用法
2016/06/28 Python
Python数据结构之翻转链表
2017/02/25 Python
Python DataFrame.groupby()聚合函数,分组级运算
2018/09/18 Python
Python 将Matrix、Dict保存到文件的方法
2018/10/30 Python
Python实现的批量修改文件后缀名操作示例
2018/12/07 Python
Python2 Selenium元素定位的实现(8种)
2019/02/25 Python
Python获取命令实时输出-原样彩色输出并返回输出结果的示例
2019/07/11 Python
django rest framework vue 实现用户登录详解
2019/07/29 Python
python 用户交互输入input的4种用法详解
2019/09/24 Python
深入理解Python 多线程
2020/06/16 Python
为什么是 Python -m
2020/06/19 Python
Python SMTP发送电子邮件的示例
2020/09/23 Python
高品质和独特的产品世界:Creations and Collections
2018/01/07 全球购物
TCP/IP模型的分界线
2012/12/01 面试题
就业协议书范本
2014/10/08 职场文书
工程安全生产协议书
2014/11/21 职场文书
倡议书格式及范文
2015/04/29 职场文书
《卖火柴的小女孩》教学反思
2016/02/19 职场文书
vue-cli4.5.x快速搭建项目
2021/05/30 Vue.js