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 下划线和双下划线内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
pygame.display.flip()和pygame.display.update()的区别及说明
这篇文章主要介绍了pygame.display.flip()和pygame.display.update()的区别及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教2024-03-03
python请求域名requests.(url = 地址)报错
本文主要介绍了python请求域名requests.(url = 地址)报错,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2023-02-02
Pandas DataFrame数据的更改、插入新增的列和行的方法
这篇文章主要介绍了Pandas DataFrame数据的更改、插入新增的列和行的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2019-06-06
python logging多进程多线程输出到同一个日志文件的实战案例
这篇文章主要介绍了python logging多进程多线程输出到同一个日志文件的实战案例,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2022-02-02


最新评论