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 相关文章推荐
wxpython学习笔记(推荐查看)
Jun 09 Python
简单介绍Python中用于求最小值的min()方法
May 15 Python
Python的Django REST框架中的序列化及请求和返回
Apr 11 Python
PyQt5实现无边框窗口的标题拖动和窗口缩放
Apr 19 Python
Pandas:DataFrame对象的基础操作方法
Jun 07 Python
Python3使用TCP编写一个简易的文件下载器功能
May 08 Python
python按比例随机切分数据的实现
Jul 11 Python
详解python中index()、find()方法
Aug 29 Python
Python Collatz序列实现过程解析
Oct 12 Python
使用python实现多维数据降维操作
Feb 24 Python
python实现飞船游戏的纵向移动
Apr 24 Python
python实现按日期归档文件
Jan 30 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源码分析之变量的存储过程分解
2014/07/03 PHP
php中使用PHPExcel读写excel(xls)文件的方法
2014/09/15 PHP
PHP中SERIALIZE和JSON的序列化与反序列化操作区别分析
2016/10/11 PHP
PHP单例模式与工厂模式详解
2017/08/29 PHP
php 读写json文件及修改json的方法
2018/03/07 PHP
php 自定义函数实现将数据 以excel 表格形式导出示例
2019/11/13 PHP
JS动态调用方法名示例介绍
2013/12/18 Javascript
使用jQuery实现返回顶部
2015/01/26 Javascript
解决jQuery使用JSONP时产生的错误
2015/12/02 Javascript
详解JavaScript基于面向对象之继承实例
2015/12/16 Javascript
RequireJS使用注意细节
2016/05/15 Javascript
js实现类bootstrap模态框动画
2017/02/07 Javascript
Angular2库初探
2017/03/01 Javascript
vue.js组件之间传递数据的方法
2017/07/10 Javascript
Angular2环境搭建具体操作步骤(推荐)
2017/08/04 Javascript
vue源码解析之事件机制原理
2018/04/21 Javascript
探索JavaScript中私有成员的相关知识
2019/06/13 Javascript
七行JSON代码把你的网站变成移动应用过程详解
2019/07/09 Javascript
Vue.js 实现地址管理页面思路详解(地址添加、编辑、删除和设置默认地址)
2019/12/11 Javascript
Python ORM框架SQLAlchemy学习笔记之数据添加和事务回滚介绍
2014/06/10 Python
Python脚本实现集群检测和管理功能
2015/03/06 Python
Python中应该使用%还是format来格式化字符串
2018/09/25 Python
python 随机打乱 图片和对应的标签方法
2018/12/14 Python
解决PyCharm不运行脚本,而是运行单元测试的问题
2019/01/17 Python
将string类型的数据类型转换为spark rdd时报错的解决方法
2019/02/18 Python
Python如何测试stdout输出
2020/08/10 Python
教你一分钟在win10终端成功安装Pytorch的方法步骤
2021/01/28 Python
CSS3实现多背景模拟动态边框的效果
2016/11/08 HTML / CSS
服务行业个人求职的自我评价
2013/12/12 职场文书
物流专业求职计划书
2014/01/10 职场文书
高三英语教学反思
2014/01/13 职场文书
社区优秀志愿者材料
2014/02/02 职场文书
优秀广告词大全
2014/03/19 职场文书
乔迁之喜主持词
2014/03/27 职场文书
土木工程毕业答辩开场白
2015/05/29 职场文书
销区经理年终述职报告模板
2019/11/28 职场文书