【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.mzph.cn/pingmian/3714.shtml

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

相关文章

Scala 04 —— Scala Puzzle 拓展

Scala 04 —— Scala Puzzle 拓展 文章目录 Scala 04 —— Scala Puzzle 拓展一、占位符二、模式匹配的变量和常量模式三、继承 成员声明的位置结果初始化顺序分析BMember 类BConstructor 类 四、缺省初始值与重载五、Scala的集合操作和集合类型保持一致性第一部分代码解释第二…

SSLHandshakeException: Remote host closed connection during handshake异常处理

请求第三方https接口出现SSLHandshakeException: Remote host closed connection during handshake问题,本地正常,服务器异常。原因是服务器jdk版本是jdk1.8_40 现阶段找到三个方案,第一个是jdk1.8_151版本 添加或者修改Java\jre\lib\securit…

VIO外参标定方法总结

一、前言 VIO外参标定是指相机和IMU之间的转移矩阵的确定,包括33的旋转矩阵和3维平移向量。整体上分为离线标定和在线标定两类方法,这篇文章做一个总结,主要是经典的方法,记录其思想。 二、博文链接 1、离线标定方法 最基本的…

抖音小店想要快速出单,必须做好这两点,这也是做店的两大核心。

大家好,我是电商糖果 很多刚开店的新手商家,都会发现店铺运营并没有网上说的这么简单。 店铺开好之后,是不会自己爆单的。 但是会有很多人说,为什么别人的店铺就可以很快的出单,然后爆单呢? 那些开电商…

安装svn网络有问题怎么办?

🏆本文收录于「Bug调优」专栏,主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&…

2024最新Nessus 免费安装 附详细安装教程

免责声明 请勿利用文章内的相关技术从事非法测试。由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,作者不为此承担任何责任,请遵守网络安全法律。本次仅用于测试,请完成测试后24小时之…

Reactjs常用组件

1 react 1.1 useState 让函数组件具有维持状态的能力 const[count, setCount]useState(0); 1.2 useEffect 执行副作用,useEffect 的第二个参数告诉 React 用到了哪些外部变量 类似于Vue watch的作用 useEffect(fn, deps); 1.每次 render 后执行:不…

从零入门区块链和比特币(第二期)

欢迎来到我的区块链与比特币入门指南!如果你对区块链和比特币感兴趣,但不知道从何开始,那么你来对地方了。本博客将为你提供一个简明扼要的介绍,帮助你了解这个领域的基础知识,并引导你进一步探索这个激动人心的领域。…

4.25 作业

#1、创建g1组,要求创建一个属于redhat用户g1组的文件redhat.txt [rootlocalhost ~]# groupadd g1 [rootlocalhost ~]# touch /root/redhat.txt [rootlocalhost ~]# ll /root/redhat.txt -rw-r--r--. 1 root root 0 4月 26 20:19 /root/redhat.txt [rootlocalhost ~…

不对称催化(三)- 动态动力学拆分动态动力学不对称转化

一、动力学拆分的基本概念: 动力学拆分的最大理论产率为50%,通过的差异可以将两个对映异构体转化为不同构型的产物,通常情况下使用两个不同反应路径来实现。但是化学家们提供了一个更加实用的方法,通过底物的构型变化实现高于50%的…

3.1设计模式——Chain of Responsibility 责任链模式(行为型)

意图 使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系,将这些对象练成一条链,并沿着这条链传递请求,直到有一个对象处理它为止。 实现 其中 Handle定义一个处理请求的接口:(可选…

【Linux】如何进行用户之间的切换——指令su

💐 🌸 🌷 🍀 🌹 🌻 🌺 🍁 🍃 🍂 🌿 🍄🍝 🍛 🍤 📃个人主页 :阿然成长日记 …

上网行为管理软件有哪些(5大好用的上网行为监控软件盘点)

企业对于员工工作效率和网络安全的关注度不断提升,上网行为管理软件成为了许多企业的必备工具。这些软件能够实时监控员工的网络活动,帮助企业提高生产力、防止数据泄露,并维护良好的网络环境。 本文将介绍五款大受欢迎的上网行为监控软件&am…

LabVIEW轴承表面缺陷检测系统

LabVIEW轴承表面缺陷检测系统 为了解决轴承生产中人工检测效率低下、误检率高的问题,实现了一套基于LabVIEW的轴承表面缺陷自动检测系统。该系统利用工业相机采集轴承图像,通过图像处理技术对轴承表面的划痕缺陷和倒角缺陷进行自动识别和分析&#xff0…

Pytorch重点概念笔记:都是本人学习中真实遇到的(一)

1.torch.squeeze的原理参数和使用方法 torch.squeeze 是PyTorch中的一个函数,用于减少张量的维数,具体来说,它会移除所有维数为1的维度。这个操作通常用于处理那些在特定操作(如卷积或池化)后可能产生不必要的单维度张量。 原理: 在某些情况下,张量操作会生成形状中包…

CPP语法(六)——函数模板

CPP语法 六—函数模板 一、 模板1.1 函数模板1.2 重载函数模板1.3 类模板1.3.1 简单类模板1.3.2 默认模板参数1.3.3 为具体类型的参数提供默认值1.3.4 有界数组模板 1.4 模板的使用1.4.1 定制模板类1.4.2 定制类模板成员函数 一、 模板 模板是c的高级特性,分为函数…

【详细实现】v1.0 随机点名应用

1.引言 前面对这个应用的功能做了详细的分析(长什么样、能干什么),以先这样对一个项目最开始的分析成为需求分析,需求分析之后就是设计阶段。 那么一般的项目,在设计阶段都需要干什么呢?在需求分析阶段确定…

Spring Cloud Eureka面试题

Spring Cloud Eureka面试题 1. Eureka基础概念1.1 什么是Eureka?1.2 Eureka的组件和架构有哪些元素组成?1.3 Eureka Server和Eureka Client有什么区别?1.4 如何描述Eureka的自我保护机制? 2. 服务注册与发现2.1 如何将服务注册到E…

[C++][算法基础]数字三角形(动态规划)

给定一个如下图所示的数字三角形,从顶部出发,在每一结点可以选择移动至其左下方的结点或移动至其右下方的结点,一直走到底层,要求找出一条路径,使路径上的数字的和最大。 73 88 1 02 7 4 4 4 5 2 6 …

c++ 智能指针 交换函数实验

1.概要 c 智能指针 交换函数实验 交换后&#xff0c;两个指针管理的目标对象会发生交换 sh_ptr1.swap(sh_ptr2); 2.代码 #include <iostream> using namespace std;int main() {shared_ptr<int> sh_ptr1 std::make_shared<int>(5);shared_ptr<int>…