Python __slots__的使用
每个类在实例化时都会被分配一个dict,通过 实例.__dict__来访问,dict记录了实例的所有属性
如:
class Man(object):
pass man = Man()
print(man.__dict__) # 输出的结果是 {}
man.name = 'Hel'
man.length = '152'
print(man.__dict__) # 输出的结果是 {'name': 'Hel', 'length': '152'}
变量__slots__是class从object继承的一个属性,用来定义类的可以绑定的属性,当在类中定义了__slots__之后,这个类就只能拥有定义的属性,同时该类的实例不能分配__dict__.
class Man(object):
__slots__ = ('age', 'length', 'name') print(man.__dict__) # 输出AttributeError: 'Man' object has no attribute '__dict 类的实例只能有slots定义的属性,如果使用定义之外的属性,将会报错
class Man(object):
__slots__ = ('age', 'length', 'name') man = Man()
man.name = 'Hel'
man.length = '152'
man.gender = 'male' # 输出AttributeError: 'Man' object has no attribute 'gender'
一般情况下,使用__slots__的类需要直接继承(object)
在继承自己创建的类时,不会继承__slots__属性
Python __slots__的使用的更多相关文章
- Python __slots__限制动态添加变量
Python是一种非常灵活的动态语言,有时感觉太灵活以至于不知道遵循什么样的规则去驾驭.不过Python已经是非常完备的语言,想实现什么样的功能都是有方法的,而且也很容易,比如限制一个类动态添加成员变 ...
- python __slots__使用详解
1.动态添加属性 class Lang(object): def __init__(self,name,score): self.name=name self.score=score def lang ...
- python __slots__ 详解(上篇)
转自:http://blog.csdn.net/sxingming/article/details/52892640 python中的new-style class要求继承Python中的一个内建类型 ...
- Python __slots__
Python 类的特殊变量:__slots__ 使用 __slots__ 后,类中 __weakref__ 和 __dict__ 消失,同时阻止动态属性绑定 由于 __dict__ 记录着类中所有的属 ...
- Python __slots__ 作用
参考:https://blog.csdn.net/u010733398/article/details/52803643 https://blog.csdn.net/sxingming/artic ...
- 链表(python)
链表1.为什么需要链表顺序表的构建需要预先知道数据大小来申请连续的存储空间,而在进行扩充时又需要进行数据的搬迁,所以使用起来并不是很灵活.链表结构可以充分利用计算机内存空间,实现灵活的内存动态管理. ...
- Python—使用__slots__限制实例的属性
如果我们想要限制实例的属性怎么办?比如,只允许对Student实例添加name和age属性. 为了达到限制的目的,Python允许在定义class的时候,定义一个特殊的__slots__变量,来限制该 ...
- Python的高级特性6:使用__slots__真的能省很多内存
在伯乐在线上看到了这篇文章,用Python的 __slots__ 节省9G内存,于是想测试下,对单个类,用__slots__节省内存效果会不会明显. 看完这个例子后,我们也会明白__slots__是用 ...
- [Python] dir() 与 __dict__,__slots__ 的区别
首先需要知道的是,dir() 是 Python 提供的一个 API 函数,dir() 函数会自动寻找一个对象的所有属性,包括搜索 __dict__ 中列出的属性. 不是所有的对象都有 __dict__ ...
随机推荐
- 1043 输出PATest
给定一个长度不超过 104 的.仅由英文字母构成的字符串.请将字符重新调整顺序,按 PATestPATest.... 这样的顺序输出,并忽略其它字符.当然,六种字符的个数不一定是一样多的,若某种 ...
- Capjoint的merrcmd生成二次曲线的misfit原理
http://www.personal.psu.edu/jhm/f90/lectures/lsq2.html
- Beta阶段冲刺---Day4
一.Daily Scrum Meeting照片 二.今天冲刺情况反馈 昨天已完成的工作: (1)闯关模式排行榜代码编写: (2)闯关模式结束时的代码编写: (3)闯关模式开始时的代码编写. 今天计划完 ...
- django本身提供了runserver,为什么不能用来部署(runserver与uWSGI的区别)
runserver方法是调试django时经常用到的运行方式,它使用django自带的. WSGI Server 运行,主要在测试和开发使用,并且runserver 开启的方式也是单线程. uWSGI ...
- python 一次创建多级目录
python 一次创建多级目录沙漠骆驼:qq音乐import osos.mkdirs('/home/user/app')
- PHP ueditor编辑器使用(TP5)
百度搜索ueditor,下载,解压,把需要的JS文件放到对应的目录里,根据框架的不同目录也不一样 在文件中引入需要的JS文件 HTML代码 <div> <!-- 编辑器 --> ...
- diary of laravel
1. 修改数据库连接 初始化数据库: 首先: 修改 config- database.php 中的 数据库链接 其次:修改 .env 中数据库链接 创建表: php artisan migr ...
- 2016 多校联赛7 Balls and Boxes(概率期望)
Mr. Chopsticks is interested in random phenomena, and he conducts an experiment to study randomness. ...
- 【Python】etree方法生成,解析xml
#练习:另一种遍历xml文件的方式etree,xpathimport systry: import xml.etree.cElementTree as ET #前面带c的都是比较快的,效率高且不占内存 ...
- 第四十一课 KMP子串查找算法
问题: 右移的位数和目标串没有多大的关系,和子串有关系. 已匹配的字符数现在已经有了,部分匹配值还没有. 前六位匹配成功就去查找PMT中的第六位. 现在的任务就是求得部分匹配表. 问题:怎么得到部分匹 ...