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系统守护着产品从设计…

Python使用总结之DataFrame数据去重

Python使用总结之DataFrame数据去重详解 在数据分析和处理中,数据去重是一个常见而重要的操作。本文将详细介绍如何使用Python的pandas库对DataFrame进行数据去重。 1. 引入必要的库 首先,我们需要导入pandas库: import pandas as pd2. 创建示例DataFrame 为了演示去重操作…

编程入门题:大象喝水问题(C语言版)

题目描述 一只大象口渴了,要喝 20升水才能解渴,但现在只有一个深 h 厘米,底面半径为 r 厘米的小圆桶 (h 和 r 都是整数)。问大象至少要喝多少桶水才会解渴。 Update:数据更新,这里我们近似地取…

PCL 点云FPFH特征描述子

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

The Morning after Halloween(待优化)

网址如下&#xff1a; The Morning after Halloween - UVA 1601 - Virtual Judge (vjudge.net) 感觉自己和废物一样&#xff0c;除了用bfs啥都不会&#xff0c;顶多改改其中的细节 代码如下&#xff1a; #include<cstdio> #include<vector> #include<cstring…

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

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

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

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

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, …

冒泡排序 选择排序 插入排序 希尔排序 归并排序 快速排序大讲解

冒泡排序 原理讲解&#xff1a; 冒泡排序&#xff08;Bubble Sort&#xff09;是一种简单的排序算法。它的基本思想是重复地遍历要排序的数列&#xff0c;一次比较两个元素&#xff0c;如果它们的顺序错误就把它们交换过来。遍历数列的工作是重复地进行直到没有再需要交换&…

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

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

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

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

最优化方法 运筹学【】

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