【Python系列】受保护属性

本文介绍了Python中受保护参数的约定,包括单下划线和双下划线的使用,以及如何通过__dict__访问和操作对象的属性。同时讨论了Python的动态访问特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论 131
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Kwan的解忧杂货铺@新空间

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值