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正则表达式 re模块使用说明
May 19 Python
详解Python中__str__和__repr__方法的区别
Apr 17 Python
尝试使用Python多线程抓取代理服务器IP地址的示例
Nov 09 Python
Python selenium抓取微博内容的示例代码
May 17 Python
详解python中的json和字典dict
Jun 22 Python
Python使用__new__()方法为对象分配内存及返回对象的引用示例
Sep 20 Python
基于python3的socket聊天编程
Feb 17 Python
Python3开发环境搭建详细教程
Jun 18 Python
python和JavaScript哪个容易上手
Jun 23 Python
python定义具名元组实例操作
Feb 28 Python
Python Pandas pandas.read_sql函数实例用法
Jun 21 Python
Python3使用Qt5来实现简易的五子棋小游戏
May 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
PHP Memcached + APC + 文件缓存封装实现代码
2010/03/11 PHP
PHP目录操作实例总结
2016/09/27 PHP
Uglifyjs(JS代码优化工具)入门 安装使用
2020/04/13 Javascript
JavaScript 判断浏览器是否支持SVG的代码
2013/03/21 Javascript
原生的html元素选择器类似jquery选择器
2014/10/15 Javascript
nodejs 整合kindEditor实现图片上传
2015/02/03 NodeJs
jQuery表单域属性过滤器用法分析
2015/02/10 Javascript
JavaScript 表单处理实现代码
2015/04/13 Javascript
javascript转换静态图片,增加粒子动画效果
2015/05/28 Javascript
你一定会收藏的Nodejs代码片段
2016/02/04 NodeJs
jquery+css3问卷答题卡翻页动画效果示例
2016/10/26 Javascript
使用jquery给新生的th绑定hover事件的实例
2017/02/10 Javascript
Node.js使用Express创建Web项目详细教程
2017/03/31 Javascript
Javascript中 toFixed四舍六入方法
2017/08/21 Javascript
微信小程序列表渲染功能之列表下拉刷新及上拉加载的实现方法分析
2017/11/27 Javascript
Vue 中mixin 的用法详解
2018/04/23 Javascript
JS使用遮罩实现点击某区域以外时弹窗的弹出与关闭功能示例
2018/07/31 Javascript
重新认识vue之事件阻止冒泡的实现
2018/08/02 Javascript
JS实现查找数组中对象的属性值是否存在示例
2019/05/24 Javascript
Vue3新特性之在Composition API中使用CSS Modules
2020/07/13 Javascript
[00:47]DOTA2荣耀之路6:玩不了啦!
2018/05/30 DOTA
Python发送Email方法实例
2014/08/21 Python
python 中split 和 strip的实例详解
2017/07/12 Python
python实现字符串中字符分类及个数统计
2018/09/28 Python
keras做CNN的训练误差loss的下降操作
2020/06/22 Python
解决python 虚拟环境删除包无法加载的问题
2020/07/13 Python
python 如何停止一个死循环的线程
2020/11/24 Python
美国第一香水网站:Perfume.com
2017/01/23 全球购物
葡萄牙航空官方网站:TAP Air Portugal
2019/10/31 全球购物
一套C++笔试题面试题
2012/06/06 面试题
夜班门卫岗位职责
2013/12/09 职场文书
后勤采购员岗位职责
2013/12/19 职场文书
2015年小学师德师风建设工作总结
2015/10/23 职场文书
react合成事件与原生事件的相关理解
2021/05/13 Javascript
再也不用花钱买漫画!Python爬取某漫画的脚本及源码
2021/06/09 Python
Elasticsearch 数据类型及管理
2022/04/19 Python