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

news/2024/7/4 16:25:39/文章来源:https://www.cnblogs.com/build2024/p/18276330

在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.hqwc.cn/news/734165.html

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

相关文章

[python] Python日志记录库loguru使用指北

Loguru是一个功能强大且易于使用的开源Python日志记录库。它建立在Python标准库中的logging模块之上,并提供了更加简洁直观、功能丰富的接口。Logging模块的使用见:Python日志记录库logging总结。Loguru官方仓库见:loguru,loguru官方文档见: loguru-doc。 Loguru的主要特点…

Codeforces Round 955 (Div. 2, with prizes from NEAR!) codeforces div2 955

A. Soccer ------------------------题解--------------- 给你开始比分和结束比分问你中间两队比分有没有相等过有可能就是YES不可能就是NO 结束时两队比分肯定>=各自队伍开始时比分,我们只需要让开始时大的先到达结束比分,再让开始时落后的比分到达结束时比分,只需要在心…

PTA题目集7~8的总结

PTA题目集7~8的总结 一、前言 第七次题目集为家居强电电路模拟程序3。本题模拟的控制设备包括:开关、互斥开关、分档调速器、连续调速器。模拟的受控设备包括:灯、风扇、受控窗帘。两种设备都有两根引脚,通过两根引脚电压的电压差驱动设备工作。输入信息有设备信息、连接信息…

STM32F4驱动USB实现虚拟串口

实现目的 使用Dap-link和stlink的时候,就发现这些仿真器上并没有USB转TTL芯片,就可以实现USB转串口,实现虚拟串口,非常方便。这里实测得出,使用USB虚拟串口,可以轻松达到921600波特率,接近1M/s,因为这个虚拟串口实际就是USB通讯,使用USB通讯,模拟COM类通讯端口协议,…

使用clion向STM32H7外置flash下载代码

简介 根据安福莱的STM32H7教程,H7单片机的QSPI外设是直接连到芯片内核上的,地址是0X90000000;那么就可以通过QSPI外设,将外置flash内存映射,并由此执行代码。相关操作在keil5上比较简单,配置点东西就行;可以参考安福莱教程。 这里要介绍的是在linux环境下没有keil5 IDE的…

Windows和Ubuntu网络文件共享

Windows11访问Ubuntu22.04共享文件夹 ubuntu配置右键选中需要共享的文件夹,选择属性->本地网络共享;选中共享此目录、允许其他人创建和删除这个文件夹里的文件、允许匿名登陆;并设置共享名配置好之后,点击修改共享。如果没有安装过samba服务,则会提升安装samba相关依赖…

Linux下使用clion+cubemx+openocd开发stm32

简述 后面需要在linux下学习驱动开发,然后不想玩虚拟机,就直接安装了双系统。用kde桌面玩的蛮开心的,就索性把win下的开发内容都搬过来吧 在Linux下开发STM32,使用Clion和Cubemx开发,openocd调试,关于芯片下载,编译器选项,代码起始内容都需要自行通过工程的配置文件修改…

银行视频监控智能分析

视频监控智能分析银行系统通过安装在银行的营业厅、取款机处或者银行柜台以及银行门口等区域的各大品牌的终端监控摄像头,视频监控智能分析在系统后台软件上的视频画面内设置智能分析区域,通过上面的操作实现对银行的7*24小时的智能视频监控分析报警,对进出人员行为进行智能…

智慧港口视频智能分析系统解决方案

港口视频监控智能分析系统是对港口各处的监控回传的视频流利用视频监控智能分析技术进行智能分析处理,视频监控智能分析系统将处理结果然后传送到中心管理服务器或者流媒体服务器进行有效管理。监控中心设立在港口控制中心,主要用于相关工作人员进行远程监控和管理。港口监控…

电力视频监控系统

电力视频监控系统通过对电力工程建设领域利用电力视频监控系统进行违规违章操作检测及其他安全区域监测,电力视频监控系统可以降低或减少安全事故造成的人员伤害和设备损害,提升公司社会形象,杜绝违规行为的发生。视频智能分析系统可以进一步强化安全管理,能够降低电力安全…

2024 最新上海市提取公积金缴纳房租 All In One

2024 最新上海市提取公积金缴纳房租 All In One 提取公积金 图解教程2024 最新上海市提取公积金缴纳房租 All In One最新版(亲测可用 ✅)随申办市民云 Apphttps://apps.apple.com/cn/app/随申办市民云/id732618720 提取公积金 图解教程步骤 图解 备注1. 打开随申办 App / 小程序…

Windows上使用VTune分析PyTorchExtension调用的Cpp程序

概述 最近在实现一个通过PyTorch Extension扩展PyTorch算子的C++算法,需要分析代码的运行瓶颈进行针对性优化。Intel VTune就是一个能从汇编级和源码级分析CPU运行瓶颈的工具。由于不明原因我没在服务器上跑通命令行版的VTune,所以把程序搬到Windows下分析了,因此记录一下Wi…

[LeetCode] 80. Remove Duplicates from Sorted Array II

原来leetcode使用Count也不需要import collections class Solution:def removeDuplicates(self, nums: List[int]) -> int:# len =0if len(nums) == 0:return 0# elsecountList = Counter(nums)countModify = {key:min(value,2) for key,value in countList.items()}ret = […

个人标语

从来不觉得自己比任何人差,讨厌懒惰,骄傲自满与妄自菲薄。

IDER如何生成数据库的ER图?

1.打开 IDEA,并连接到 MySQL数据库这里连接到你的数据库 2.在菜单栏中选择"View"->"Tool windows"->"Database" 3.在"Database" 工具窗口中,展开你想要査看的数据库,并选择"ER Diagrams"。 4.右键单击"ER Dia…

服务器系统瘫痪系统损坏数据恢复

故障服务器数据恢复环境: 一台故障服务器;共有4块146G SAS硬盘组成的RAID5;故障服务器分析检测: 服务器在运行过程中系统瘫痪,重装系统后系统损坏。系统中有数据库、网站程序与网页。 服务器数据恢复过程: 1、对全盘reiserfs树节点之间的关联确定原来的reiserfs分区位置镜…

服务器瘫痪,里面存有mysql数据库表结构

最上层,大多数基于网络服务器的工具或服务都有类似架构。 第二层,大多数MySQL的核心服务,包括查询解析、分析、优化、缓存以及所有的内置函数,所有跨存储引擎的功能都在这一层实现:存储过程、触发器、视图等。 第三层,存储引擎负责MySQL中数据的存储和提取。服务器通过AP…

误操作还原VMware虚拟机数据恢复

故障服务器数据恢复环境: 一台故障物理服务器上迁移到ESXI上的虚拟机。故障服务器检测与分析: 虚拟机的数据恢复迁移的状态,数据全部丢失。还原快照操作与删除数据,将该设备上所有虚拟机关机或迁移到其他ESXI上。 恢复数据之前需要先了解vmfs文件系统的底层结构。vmfs文件系…

存储中NAS卷数据丢失数据恢复

故障服务器数据恢复环境: 一台故障存储,支持SAN和NAS存储协议。服务器故障检测与分析: 存储一个NAS卷中的数据丢失,卷大小为2T,经过检查发现丢失数据的类型为office文档、PDF文件、图片文件(JPG、JPEG、PNG等)。 服务器数据恢复过程: 1、准备好备份服务器,将备份服务器…

系统误操作删除数据恢复

故障服务器环境故障: 一台有文件系统的故障服务器,误操作删了服务器上的数据。服务器数据恢复过程: 1、对故障服务器所有硬盘进行扇区级镜像备份。 2、根据文件系统结构和元信息分析文件系统盘序、使用盘数和校验盘个数等信息。 3、全盘扫描节点入口。 4、扫描所有硬盘的底层…