Python 使用__slots__来限制实例动态添加属性

在Python中,是可以随便在对象实例中动态添加属性的。那么,怎么样可以防止其他人在调用类实例的时候胡乱添加属性和方法?

  1. 使用 __slots__ 属性,来限制 class 实例能添加的属性

也就是说,只有在 __slots__ 变量中的属性才能被动态添加,否则会添加失败。

例如,创建一个 Person 类,通过在 __slots__ 变量中设置能动态添加的两个属性,name 和 age

class Person:__slots__=('name','age')  #只允许动态添加的属性

创建 Person 实例对象,进行属性添加。这样是没有问题的

xh= Person()
xh.name = '小黄'
xh.age = 20

那如果再动态添加其他属性,例如:添加一个 school 属性,则会添加失败

image

也就是当前的 Person 实例对象,除了能添加在 __slots__ 变量中设置的属性外,其他属性将会添加失败


总结

  • __slots__ 变量,用来限制 class 实例能添加的实例属性,并且添加的值是一个元组的形式
  • 在子类和父类的继承关系中,如果子类也声明了 __slots__ ,那么会继承父类的 __slots__所声明能动态添加的属性外,还可以在定义属于子类的属性添加限制
  • 若子类未声明__slots__变量,则不会继承父类的 __slots__,此时子类是可以随意的动态添加任何属性的
  • 在没有声明 __slots__ 变量时,所有动态添加的且可用的属性都会存在当前 xh 实例对象的 __dict__中,可以通过xh.__dict__来查看。若声明了 __slots__ ,则是存在slots中
  • 使用 __slots__ 优点,节点内存空间;能限制要添加的实例属性;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/43044.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java---包装类与泛型

1.包装类 1.1 包装类 在Java中,由于基本数据类型不是继承Object类,为了在泛型代码中可以支持基本数据类型,Java给每个基本数据类型各自提供了一个包装类。 如下图 除了char和int基本数据类型的包装类型有点特别,其他的都是首字…

Vue3基础知识:组合式API中的provide和inject,他们作用是什么?如何使用?以及案例演示

1.provide和inject相较于父子传递的不同在于provide,inject可以用于跨层级通信(通俗易懂的讲就是可以实现爷孙之间的直接信息传递)。 1.跨层级传递数据 1.在顶层组件通过provide函数提供数据 2.底层组件通过inject函数获取数据 演示一:跨…

工业一体机在物流智能设备中的意义

工业一体机在物流智能设备中的应用具有深远的意义,它们为物流行业的数字化转型和智能化升级提供了强大的技术支持。以下是工业一体机在物流智能设备中的几个主要意义: 一、提升物流作业效率 高性能与稳定性:工业一体机采用工业级硬件组件和…

【Ubuntu】windows和Linux文件互传、共享

【Ubuntu】windows和Linux文件互传、共享 一、FTP、SAMBA、NFS简介 FTP: File Transfer Protocol(文件传输协议) SAMBA: 基于SMB(Server Message Block服务器消息块)协议的软件实现 NFS: Network File System(网络文件系统) 二、Linux 共享文…

【信息学奥赛】CSP-J/S初赛07 逻辑运算符与位运算

本专栏👉CSP-J/S初赛内容主要讲解信息学奥赛的初赛内容,包含计算机基础、初赛常考的C程序和算法以及数据结构,并收集了近年真题以作参考。 如果你想参加信息学奥赛,但之前没有太多C基础,请点击👉专栏&#…

私有化要约溢价60%,欧舒丹与投资者的相互成就

港股市场迎来新一轮私有化浪潮。据上海证券报不完全统计,自2023年以来,已有19家港股上市公司完成私有化退市。 对于深陷港股低估值困境的投资者来说,持仓名单里有公司宣布高溢价私有化要约,可谓“喜大普奔”的消息。 上市公司私…

202488读书笔记|《365日创意文案》——无聊的 到底是这世间, 还是自己?懂得忘却的人才能前进

202488读书笔记|《365日创意文案》——无聊的 到底是这世间, 还是自己?懂得忘却的人才能前进 1月2月3月4月5月6月7月8月9月10月11月12月 《365日创意文案》WRITES PUBLISHING,一些日常,是烟火,也是幸福的印记。 当下也…

电脑文件怎么加密?重要文件加密方法介绍

在使用电脑的过程中,我们需要加密保护重要文件,以免重要数据泄露。下面小编就为大家介绍两款文件加密软件,帮助你轻松加密保护重要文件。 超级加密3000 在众多文件加密软件中,超级加密3000凭借超高的加密强度,便捷的操…

ERP、CRM、MRP、PLM、APS、MES、WMS、SRM系统之间的关系

ERP系统是企业运营的神经中枢,整合了财务、人力资源、供应链等关键业务流程。CRM系统作为客户关系管理的专家,帮助企业深入了解客户需求,提升服务质量。MRP是物料需求的规划师,确保生产所需材料及时供应。PLM系统守护着产品从设计…

PCL 点云FPFH特征描述子

点云FPFH特征描述子 一、概述1.1 FPFH概念1.2 基本原理1.3 PFH和FPFH的区别二、代码实现三、结果示例一、概述 1.1 FPFH概念 快速点特征直方图(FPFH)描述子:计算 PFH 特征的效率其实是十分低的,这样的算法复杂度无法实现实时或接近实时的应用。因此,这篇文章将介绍 PFH 的简…

6000元最好的家用投影仪:当贝X5S Pro六千元配置最高画质最强

数码家电品牌发展迅速,投影同样也是一种更新迭代较快的产品类型,有时候去年还比较火的产品,今年就会被别的产品取代,就比如之前灯泡投影一直被认为是好产品的代表,但是现在国产激光投影的销量反而更高。一般来说6000元…

容易涨粉的视频素材在哪找啊?爆款涨粉的视频素材网站有这几个

亲爱的读者,大家好!今天我们要探讨一个至关重要的问题:在充满竞争的视觉时代,如何使自己的短视频脱颖而出并吸引更多粉丝?关键在于使用那些既酷炫又高质量的视频素材!下面就向大家推荐几个顶级视频素材网站…

Mysql笔记-v2

零、 help、\h、? 调出帮助 mysql> \hFor information about MySQL products and services, visit:http://www.mysql.com/ For developer information, including the MySQL Reference Manual, visit:http://dev.mysql.com/ To buy MySQL Enterprise support, training, …

永磁同步电机无速度算法--滑模观测器(反正切、反余弦)

一、原理介绍 在永磁同步电机滑模观测器控制中,转子的位置和转速信息与反动电势密切相关。滑模观测器控制基本设计思路是:利用永磁同步电机的电压、电流信息,通过永磁同步电机数学模型,估算出电机在两相静止坐标系中的反电动势信…

python中flask服务数据,客户端接收到中文乱码

问题:使用flask框架开发web服务。客户端接收到数据后,发现中文乱码 问题原因剖析:数据服务端打印出来,中文显示正常。客户端接收到数据,以json方式打开,中文也是正常的,以text或content打开&am…

最优化方法 运筹学【】

1.无约束 常用公式 线搜索准则:求步长 精确线搜索(argmin) 最速下降:sd:线性收敛 2.算法 SD dk:付梯度-g newton dk:Gkd-g 二阶收敛,步长为1 阻尼牛顿:步长用先搜…

mmaction2版本适配(Linux)

从cuda到mmcv保姆式教程 (数十年踩坑经验,跟着我做,版本不会错~) 如果有补充,请评论区评论,后续填坑! cuda11.3 下载安装包 wget https://developer.download.nvidia.com/compute/cuda/11.3…

第九篇——军形篇:先胜后战,赢了再打

目录 一、背景介绍二、思路&方案三、过程1.思维导图2.文章中经典的句子理解3.学习之后对于投资市场的理解4.通过这篇文章结合我知道的东西我能想到什么? 四、总结五、升华 一、背景介绍 微观层面的,洞察千里之外;提前预防以做到规避风险…

产品经理-的职业发展(9)

找一份好工作,就是为了获得更好的职业发展,下面分别给大家介绍下大、中、小型公司的职业发展路径 中小型公司 中小型公司的规模往往相对不大,又处于飞速发展过程中,培养体系和晋升标准都不够成熟,所以实际的职业发展路…

阿里开源语音理解和语音生成大模型FunAudioLLM

近年来,人工智能(AI)的进步极大地改变了人类与机器的互动方式,例如GPT-4o和Gemin-1.5等。这种转变在语音处理领域尤为明显,其中高精度的语音识别、情绪识别和语音生成等能力为更直观、更类人的交互铺平了道路。阿里开源…