栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

DAY9

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

DAY9

概述

python是动态语言,在运行的时候可以动态添加属性。如果要限制在运行的时候给类添加属性,python允许在定义class的时候,定义一个特殊的__slots__变量,来限制该class实例能添加的属性。

只有在__slots__变量中的属性才能被添加,没有在__slots__变量中的属性会添加失败。可以防止其他人在调用类的时候胡乱添加属性或方法。__slots__属性子类不会继承,只有在当前类中有效。

实操
只要没在slots范围内,便会报错



作用

限制要添加的实例属性
可以节约内存空间

一般而言,所有可以用的属性都在字典里面存储,但占用的内存空间大。



如果通过__slots__限制,则数据不会存在字典里,所有可用的属性都存在slots里面了



可以看到,在定义了slots变量之后,steudent类的实例已经不能再随意创建不在__slots__定义的属性了;同时还可以看到,实例当中也不再有__dict__结构了

在继承关系中的使用



子类未声明__slots__时,那么是不会继承父类的__slots__,此时子类是可以随意地属性赋值的

声明一下


子类声明了__slots__时,继承父类的__slots__,也就是子类__slots__的范围是其自身+父类的__slots__



一般而言,在父类__slots__中写过的属性,没必要再在子类__slots__中再写一遍,占用空间大小

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/321918.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号