Python中私有属性“_“下划线和“__“双下划线区别
在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 attribute
I am a protected attribute
I am a private attribute
I am a public attribute
I am a protected attribute
I am a private attribute
AttributeError: 'MyClass' object has no attribute '__private_attribute'
可以看到,Python中使用下划线和双下划线来表示不同级别的属性访问限制。在使用时,应该遵循一定的规范和约定,以便代码能够更加清晰和易于维护。
到此这篇关于Python中私有属性“_“下划线和“__“双下划线区别的文章就介绍到这了,更多相关Python 下划线和双下划线内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
深入理解Python虚拟机中字典(dict)的实现原理及源码剖析
这篇文章主要介绍了在 cpython 当中字典的实现原理,在本篇文章当中主要介绍在早期 python3 当中的版本字典的实现,现在的字典做了部分优化,希望对大家有所帮助2023-03-03用Python把csv文件批量修改编码为UTF-8格式并转为Excel格式的方法
有时候用excel打开一个csv文件,中文全部显示乱码,然后手动用notepad++打开,修改编码为utf-8并保存后,再用excel打开显示正常,本文将给大家介绍一下用Python把csv文件批量修改编码为UTF-8格式并转为Excel格式的方法,需要的朋友可以参考下2023-09-09Python中str is not callable问题详解及解决办法
这篇文章主要介绍了Python中str is not callable问题详解及解决办法的相关资料,需要的朋友可以参考下2017-02-02python网络编程学习笔记(九):数据库客户端 DB-API
这篇文章主要介绍了python 数据库客户端 DB-API的相关资料,需要的朋友可以参考下2014-06-06使用PyInstaller将Pygame库编写的小游戏程序打包为exe文件及出现问题解决方法
这篇文章主要介绍了使用PyInstaller将Pygame库编写的小游戏程序打包为exe文件的方法,给大家介绍了通过Pyinstaller打包Pygame库写的小游戏程序出现的问题及解决方法,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下2019-09-09
最新评论