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 执行字符串表达式函数(eval exec execfile)
Aug 11 Python
Python判断变量是否已经定义的方法
Aug 18 Python
Python+OpenCV实现车牌字符分割和识别
Mar 31 Python
Python获取网段内ping通IP的方法
Jan 31 Python
python ChainMap的使用和说明详解
Jun 11 Python
Python代码太长换行的实现
Jul 05 Python
python 哈希表实现简单python字典代码实例
Sep 27 Python
nginx+uwsgi+django环境搭建的方法步骤
Nov 25 Python
Python Des加密解密如何实现软件注册码机器码
Jan 08 Python
Python脚本导出为exe程序的方法
Mar 25 Python
用Python实现童年贪吃蛇小游戏功能的实例代码
Dec 07 Python
如何在vscode中安装python库的方法步骤
Jan 06 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获取网页内容方法总结
2008/12/04 PHP
thinkphp学习笔记之多表查询
2014/07/28 PHP
php实现的简单检验登陆类
2015/06/18 PHP
php利用fsockopen GET/POST提交表单及上传文件
2017/05/22 PHP
Yii2.0使用阿里云OSS的SDK上传图片、下载、删除图片示例
2017/09/20 PHP
Laravel5.1 框架控制器基础用法实例分析
2020/01/04 PHP
use jscript List Installed Software
2007/06/11 Javascript
jQuery EasyUI中对表格进行编辑的实现代码
2010/06/10 Javascript
从零开始学习jQuery (四) jQuery中操作元素的属性与样式
2011/02/23 Javascript
js 第二代身份证号码的验证机制代码
2011/05/12 Javascript
Js 回车换行处理的办法及replace方法应用
2013/01/24 Javascript
JS中不为人知的五种声明Number的方式简要概述
2013/02/22 Javascript
js数组中如何随机取出一个值
2014/06/13 Javascript
用js读、写、删除Cookie代码续篇
2014/12/03 Javascript
jQuery给元素添加样式的方法详解
2015/12/30 Javascript
jQuery实现图片走马灯效果的原理分析
2016/01/16 Javascript
初探nodeJS
2017/01/24 NodeJs
Vue-Router2.X多种路由实现方式总结
2018/02/09 Javascript
JS数组去重常用方法实例小结【4种方法】
2018/05/28 Javascript
webpack之引入图片的实现及问题
2018/10/08 Javascript
JavaScript Math对象和调试程序的方法分析
2019/05/13 Javascript
基于 vue-skeleton-webpack-plugin 的骨架屏实战
2019/08/05 Javascript
javascript实现切割轮播效果
2019/11/28 Javascript
[37:45]2014 DOTA2国际邀请赛中国区预选赛5.21 DT VS Orenda
2014/05/22 DOTA
[50:17]Newbee vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
解决python2.7用pip安装包时出现错误的问题
2017/01/23 Python
TensorFlow搭建神经网络最佳实践
2018/03/09 Python
Python爬虫工程师面试问题总结
2018/03/22 Python
Python实现多条件筛选目标数据功能【测试可用】
2018/06/13 Python
Python从Excel中读取日期一列的方法
2018/11/28 Python
Python3实现的简单工资管理系统示例
2019/03/12 Python
阿迪达斯墨西哥官方网站:adidas墨西哥
2017/11/03 全球购物
电工技术比武方案
2014/05/11 职场文书
运动会加油口号
2014/06/07 职场文书
领导班子整改方案和个人整改措施
2014/10/25 职场文书
Python字符串常规操作小结
2022/04/03 Python