本文作者:云初冀北

Python中私有属性“_“下划线和“__“双下划线区别

Python中私有属性“_“下划线和“__“双下划线区别摘要: 在Python中,使用一个下划线(_)和两个下划线(__)来表示私有属性。1、一个下划线一个下划线的属性名(例如 _x)表示这个属性是受保护的,应该被视为私有属性,尽管它仍然可以被...

?=Python中,使用一个下划线(_)和两个下划线(__)来表示私有属性。

1、一个下划线

一个下划线的属性名(例如 _x)表示这个属性是受保护的,应该被视为私有属性,尽管它仍然可以被实例直接访问。受保护的属性被视为仅供内部使用,并且应该被子类和外部代码视为不可访问的。但是,它们可以被子类和外部代码直接访问。

2、两个下划线

两个下划线的属性名(例如 __x)表示这个属性是真正的私有属性。这意味着在类的外部无法直接访问该属性,甚至子类也不能访问它。python自动将这个属性名重命名为 _classname__x 的形式,以避免命名冲突。

3、代码示例

class MyClass: def __init__(self): self.Public_attribute = "I am a public attribute" self._protected_attribute = "I am a protected attribute" self.__private_attribute = "I am a private attribute"   def print_attributes(self): print(self.public_attribute) print(self._protected_attribute) print(self.__private_attribute)     obj = MyClass()   # Accessing public attribute print(obj.public_attribute)   # Accessing protected attribute print(obj._protected_attribute)   # Accessing private attribute using iTS mangled name print(obj._MyClass__private_attribute)   # Printing all attributes using method obj.print_attributes()   # Accessing private attribute # this will raise an AttributeError print(obj.__private_attribute) 

输出结果

I am a public attributeI am a protected attributeI am a private attributeI am a public attributeI am a protected attributeI am a private attributeAttributeError: 'MyClass' object has no attribute '__private_attribute'

可以看到,Python中使用下划线和双下划线来表示不同级别的属性访问限制。在使用时,应该遵循一定的规范和约定,以便代码能够更加清晰和易于维护。

到此这篇关于Python中私有属性“_“下划线和“__“双下划线区别的文章就介绍到这了,更多相关Python 下划线和双下划线内容请搜索云初冀北以前的文章或继续浏览下面的相关文章希望大家以后多多支持云初冀北!

免责声明
本站提供的资源,都来自网络,版权争议与本站无关,所有内容及软件的文章仅限用于学习和研究目的。不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负,我们不保证内容的长久可用性,通过使用本站内容随之而来的风险与本站无关,您必须在下载后的24个小时之内,从您的电脑/手机中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。侵删请致信E-mail:Goliszhou@gmail.com
$

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

阅读
分享

发表评论

快捷回复:

评论列表 (暂无评论,202人围观)参与讨论

还没有评论,来说两句吧...