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的Cookie.py模块支持冒号做key的方法
Dec 28 Python
Python sys.path详细介绍
Oct 17 Python
利用python打印出菱形、三角形以及矩形的方法实例
Aug 08 Python
使用python实现knn算法
Dec 20 Python
python 实现读取一个excel多个sheet表并合并的方法
Feb 12 Python
Python 3.6 -win64环境安装PIL模块的教程
Jun 20 Python
tensorflow使用range_input_producer多线程读取数据实例
Jan 20 Python
python 等差数列末项计算方式
May 03 Python
Python中Selenium模块的使用详解
Oct 09 Python
用python写一个带有gui界面的密码生成器
Nov 06 Python
python scipy 稀疏矩阵的使用说明
May 26 Python
Python图片检索之以图搜图
May 31 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/04/03 PHP
thinkphp中空模板与空模块的用法实例
2014/11/26 PHP
php实现递归的三种基本方式
2020/07/04 PHP
php rmdir使用递归函数删除非空目录实例详解
2016/10/20 PHP
js 实现打印网页中定义的部分内容的代码
2010/04/01 Javascript
javascript XMLHttpRequest对象全面剖析
2010/04/24 Javascript
jQuery之浮动窗口实现代码(两种方法)
2010/09/08 Javascript
jQuery获取文本节点之 text()/val()/html() 方法区别
2011/03/01 Javascript
jquery 提示信息显示后自动消失的具体实现
2013/12/18 Javascript
Adapter适配器模式在JavaScript设计模式编程中的运用分析
2016/05/18 Javascript
浅谈Javascript中的12种DOM节点类型
2016/08/19 Javascript
AngularJS实现一次监听多个值发生的变化
2016/08/31 Javascript
Javascript同时声明一连串(多个)变量的方法
2017/01/23 Javascript
javascript实现复选框全选或反选
2017/02/04 Javascript
简单的Vue异步组件实例Demo
2017/12/27 Javascript
利用es6 new.target来对模拟抽象类的方法
2019/05/10 Javascript
vue element upload组件 file-list的动态绑定实现
2019/10/11 Javascript
Vue SPA 初次进入加载动画实现代码
2019/11/14 Javascript
JavaScript常用进制转换及位运算实例解析
2020/10/14 Javascript
Python实现数据库编程方法详解
2015/06/09 Python
Python统计文件中去重后uuid个数的方法
2015/07/30 Python
在pandas多重索引multiIndex中选定指定索引的行方法
2018/11/16 Python
Django中Middleware中的函数详解
2019/07/18 Python
Python调用.NET库的方法步骤
2019/12/27 Python
解决selenium+Headless Chrome实现不弹出浏览器自动化登录的问题
2021/01/09 Python
印度排名第一的蛋糕、鲜花和礼品送货:Winni
2019/08/02 全球购物
美国鲜花递送:UrbanStems
2021/01/04 全球购物
Quiksilver美国官网:始于1969年的优质冲浪服和滑雪板外套
2020/04/20 全球购物
员工自我鉴定
2013/10/09 职场文书
计算机本科生自荐信
2013/10/15 职场文书
新领导上任欢迎词
2014/01/13 职场文书
夏季奶茶店创业计划书
2014/01/16 职场文书
中学生思想品德评语
2014/12/31 职场文书
实习护士自荐信
2015/03/25 职场文书
爱鸟护鸟的宣传语
2015/07/13 职场文书
2016会计专业自荐信范文
2016/01/28 职场文书