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自动化测试工具Splinter简介和使用实例
May 13 Python
详解Python中的__new__()方法的使用
Apr 09 Python
在Python中使用SQLite的简单教程
Apr 29 Python
Python中的os.path路径模块中的操作方法总结
Jul 07 Python
用python的requests第三方模块抓取王者荣耀所有英雄的皮肤实例
Dec 14 Python
Python树莓派学习笔记之UDP传输视频帧操作详解
Nov 15 Python
pytorch 实现tensor与numpy数组转换
Dec 27 Python
解决Tensorflow 使用时cpu编译不支持警告的问题
Feb 03 Python
Python多线程通信queue队列用法实例分析
Mar 24 Python
完美解决jupyter由于无法import新包的问题
May 26 Python
Python grpc超时机制代码示例
Sep 14 Python
Python内置数据结构列表与元组示例详解
Aug 04 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/05/26 PHP
快速配置PHPMyAdmin方法
2008/06/05 PHP
curl不使用文件存取cookie php使用curl获取cookie示例
2014/01/26 PHP
ThinkPHP提示错误Fatal error: Allowed memory size的解决方法
2015/02/12 PHP
简单谈谈PHP vs Node.js
2015/07/17 PHP
谈谈PHP连接Access数据库的注意事项
2016/08/12 PHP
Laravel-admin之修改操作日志的方法
2019/09/30 PHP
详解将数据从Laravel传送到vue的四种方式
2019/10/16 PHP
Laravel5.1 框架Middleware中间件基本用法实例分析
2020/01/04 PHP
JQuery Tips(3) 关于$()包装集内元素的改变
2009/12/14 Javascript
如何通过javascript操作web控件的自定义属性
2013/11/25 Javascript
jquery scroll()区分横向纵向滚动条的方法
2014/04/04 Javascript
jquery等待效果示例
2014/05/01 Javascript
jQuery表单域选择器用法分析
2015/02/10 Javascript
jQuery实现360°全景拖动展示
2015/03/18 Javascript
jQuery+css3实现Ajax点击后动态删除功能的方法
2015/08/10 Javascript
jQuery时间日期三级联动(推荐)
2016/11/27 Javascript
js实现时间轴自动排列效果
2017/03/09 Javascript
使用openSpeDiv方法实现Ecshop登录弹窗框效果
2017/03/13 Javascript
Three.js中矩阵和向量的使用教程
2019/03/19 Javascript
微信小程序页面间传值与页面取值操作实例分析
2019/04/30 Javascript
Python找出最小的K个数实例代码
2018/01/04 Python
Python中pandas模块DataFrame创建方法示例
2018/06/20 Python
python tkinter库实现气泡屏保和锁屏
2019/07/29 Python
Django如何实现上传图片功能
2019/08/16 Python
python 有效的括号的实现代码示例
2019/11/11 Python
python实现小世界网络生成
2019/11/21 Python
拉斯维加斯酒店、演出、旅游、俱乐部及更多:Vegas.com
2019/02/28 全球购物
测试工程师岗位职责
2013/11/28 职场文书
公益活动策划方案
2014/01/09 职场文书
党的群众路线教育实践活动个人承诺书
2014/05/22 职场文书
授权委托书
2014/09/17 职场文书
2014年企业党支部工作总结
2014/12/04 职场文书
《观潮》教学反思
2016/02/17 职场文书
python自动化之如何利用allure生成测试报告
2021/05/02 Python
vue组件vue-esign实现电子签名
2022/04/21 Vue.js