【Python系列】受保护属性

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。
img

  • 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老
  • 导航
    • 檀越剑指大厂系列:全面总结 java 核心技术点,如集合,jvm,并发编程 redis,kafka,Spring,微服务,Netty 等
    • 常用开发工具系列:罗列常用的开发工具,如 IDEA,Mac,Alfred,electerm,Git,typora,apifox 等
    • 数据库系列:详细总结了常用数据库 mysql 技术点,以及工作中遇到的 mysql 问题等
    • 懒人运维系列:总结好用的命令,解放双手不香吗?能用一个命令完成绝不用两个操作
    • 数据结构与算法系列:总结数据结构和算法,不同类型针对性训练,提升编程思维,剑指大厂

非常期待和您一起在这个小小的网络世界里共同探索、学习和成长。💝💝💝 ✨✨ 欢迎订阅本专栏 ✨✨

博客目录

    • 一.受保护参数
    • 二.如何访问

一.受保护参数

在 Python 中,有两种约定用于指示某个属性或方法是受保护的,即不应该被外部直接访问或使用。这些约定是:

  1. 单下划线前缀(_): 在属性或方法的名称前加上单个下划线,例如 _protected_variable_protected_method()。这个约定表示该属性或方法是受保护的,建议外部代码不要直接访问或使用它。虽然这只是一个约定,并没有真正限制外部代码的访问,但它向其他开发人员传达了一个警示,表明这是一个内部实现细节,可能会有变化。

  2. 双下划线前缀(__): 在属性或方法的名称前加上双下划线,例如 __private_variable__private_method()。这个约定表示该属性或方法是私有的,应该在类的内部使用,不应该被子类或外部代码直接访问。Python 使用名称修饰(name mangling)来对双下划线前缀进行变换,以避免与子类中相同名称的属性或方法冲突。例如,__private_variable 在类内部被转换为 _ClassName__private_variable

这些约定只是一种代码风格和最佳实践,而不是强制规定。在 Python 中,属性和方法的访问控制是基于约定和开发人员遵守的规则,而不是强制执行的。这是因为 Python 鼓励开放和动态的访问模式,依赖程序员的自律和团队的合作。
在这里插入图片描述

二.如何访问

在 Python 中,__dict__ 是一个特殊属性,它是一个字典(dictionary),用于存储对象的属性和方法。该字典将对象的属性名作为键,对应的属性值作为值。

通过访问 __dict__ 属性,您可以获取对象的属性和方法字典,从而查看、修改或删除对象的属性和方法。这使得您可以动态地操作对象的属性,而不需要事先知道属性的名称。

虽然 __dict__ 是一个受保护的属性(以双下划线开头),但它仍然可以通过对象实例来访问。这是因为 Python 提供了一种特殊的机制,即当您通过点号(.)访问属性时,Python 解释器会自动查找对象的 __dict__ 属性来获取属性值。

需要注意的是,对于某些特殊类型的对象,如内置类型(built-in types)或扩展类型(extension types),它们可能不会具有 __dict__ 属性。这是因为这些对象的属性和方法可能是在底层实现中进行管理的,而不是存储在字典中。

__dict__ 属性提供了一种访问对象属性和方法的底层机制,但在正常情况下,我们通常不直接使用 __dict__ 来访问对象的属性。相反,我们应该使用常规的属性访问方式,以提高代码的可读性和可维护性。
在这里插入图片描述

觉得有用的话点个赞 👍🏻 呗。
❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄

💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍

🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙

img

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

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

相关文章

了解时间复杂度和空间复杂度

在学习数据结构前,我们需要了解时间复杂度和空间复杂度的概念,这能够帮助我们了解数据结构。 算法效率分为时间效率和空间效率 时间复杂度 一个算法的复杂度与其执行的次数成正比。算法中执行基础操作的次数,为算法的时间复杂度。 我们采…

【网络安全】安全事件管理处置 — 安全事件处置思路指导

专栏文章索引:网络安全 有问题可私聊:QQ:3375119339 目录 一、处理DDOS事件 1.准备工作 2.预防工作 3.检测与分析 4.限制、消除 5.证据收集 二、处理恶意代码事件 1.准备 2.预防 3.检测与分析 4.限制 5.证据收集 6.消除与恢复 …

路由器使用docker安装mysql和redis服务

路由器使用docker安装mysql和redis服务 1.先在路由器中开启docker功能 (需要u盘 或者 移动硬盘) 2. docker 管理地址 :http://192.168.0.1:11180/#/ 3. 拉取镜像 4. mysql容器参数设置 MYSQL_ROOT_PASSWORD 5. redis 容器设置 开发经常需要用到 &…

Check the `candidate.safety_ratings` to see if the respoe was blocked.

ValueError:“response.text”快速访问器仅适用于简单(单“部分”)文本响应。此响应不是简单的文本。请改用“result.parts”访问器或完整的“result.candidates[index].content.parts”查找。期号 #170 谷歌-双子座/生成-人工智能-python Gi…

四:物联网ARM开发

一:ARM体系结构概述 1:控制外设led灯还有一些按键这些就要用到gpio,采集传感器的数据需要adc进行转化数据格式,特殊的外设和传感器是通过特殊的协议接口去进行连接的比如一些轴传感器和主控器的连接是通过spi,IIC 控制…

【优秀AI项目】每日跟踪 OpenVoice ,AI快站,OpenVoice

持续更新好玩的开源AI项目或AI商业应用体验 一起来玩转AI!! 1 huggingface 国内镜像站:AI 快站 HUggingface被墙了,emmmmm 所以我之前玩模型的一大感觉就是 下载什么模型之类的太难受了!服了 看到一个镜像站——…

Rabbitmq安装延迟插件rabbitmq_delayed_message_exchange失败

Docker里的Rabbitmq容器安装延迟插件rabbitmq_delayed_message_exchange失败 一启动插件Rabbitmq容器直接停止运行了 rabbitmq-plugins enable rabbitmq_delayed_message_exchange排除了版本问题和端口问题等,发现是虚拟机运行内存不够,增加虚拟机运行内…

Appium 并行测试多个设备的方法

一、前置说明 在自动化测试中,经常需要验证多台设备的兼容性,Appium可以用同一套测试运例并行测试多个设备,以达到验证兼容性的目的。 解决思路: 1. 查找已连接的所有设备; 2. 为每台设备启动相应的Appium Server&…

7天入门Android开发之第1天——初识Android

一、Android系统 1.Linux内核层: 这是安卓系统的底层,它提供了基本的系统功能,如内存管理、进程管理、驱动程序模型等。安卓系统构建在Linux内核之上,借助于Linux的稳定性和安全性。 2.系统运行库层: 这一层包括了安卓…

2.7设计模式——Proxy 代理模式(结构型)

意图 为其它对象提供一种代理以控制这个对象的访问。 结构 Proxy保存一个引用使得代理可以访问实体;提供一个与Subject的接口相同的接口,使代理可以用来替代实体;控制实体的存取,并可能负责创建和删除它;其他功能依赖…

2024年世界排名TOP250医院榜单发布|医学访学/博后/联培博士参考

作为医学类的访问学者、博士后及联合培养博士们,都希望到世界知名医院进行临床研修交流及科研学习。2024年世界最佳医院排行榜的发布为申请者提供了可选目标,现知识人网小编整理刊出。 近日,美国《新闻周刊》(Newsweek&#xff09…

IDEA生成测试类

方法一 具体流程: 选中要生成的测试类------------>选择code选项------------>选择Generate选项---------->选择test选项---------->选择要生成的方法 第一步: 光标选中需要生成测试类的类 找到code选项 选中Generate选项 选中test选项 选中你要生成的测试…