脚本之家,脚本语言编程技术及教程分享平台!
分类导航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|shell|

服务器之家 - 脚本之家 - Python - Python中私有属性“_“下划线和“__“双下划线区别

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

2023-03-09 12:08*_花非人陌_* Python

本文主要介绍了Python中私有属性“_“下划线和“__“双下划线区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

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

1、一个下划线

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

2、两个下划线

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

3、代码示例

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
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 下划线和双下划线内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://blog.csdn.net/qq_41619571/article/details/129381256

延伸 · 阅读

精彩推荐
  • PythonPython numpy中的ndarray介绍

    Python numpy中的ndarray介绍

    这篇文章主要介绍了Python numpy中的ndarray,numpy 模块通常被称为 matplotlib 模块伴侣,numpy可以方便快捷地对大量数据进行科学计算,为matplotlib 绘制图表提供...

    盆友圈的小可爱6702022-09-01
  • Pythonpython调用matlab的m自定义函数方法

    python调用matlab的m自定义函数方法

    今天小编就为大家分享一篇python调用matlab的m自定义函数方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    mishidemudong9182021-05-29
  • PythonPython实战之画哆啦A梦(超详细步骤)

    Python实战之画哆啦A梦(超详细步骤)

    这篇文章主要介绍了Python实战之画哆啦A梦(超详细步骤),文中有非常详细的代码示例,对正在学习python的小伙伴们有非常好的帮助,需要的朋友可以参考下...

    丷爱因卉卉灬8932021-10-21
  • PythonPython基于OpenCV库Adaboost实现人脸识别功能详解

    Python基于OpenCV库Adaboost实现人脸识别功能详解

    这篇文章主要介绍了Python基于OpenCV库Adaboost实现人脸识别功能,结合实例形式分析了Python下载与安装OpenCV库及相关人脸识别操作实现技巧,需要的朋友可以参考...

    Kedi10172021-03-29
  • Python详解基于K-means的用户画像聚类模型

    详解基于K-means的用户画像聚类模型

    这篇文章主要介绍了基于K-means的用户画像聚类模型,本文中就是使用one-hot思想将不同维度的数据利用字典映射的方式将其转化为数据向量,需要的朋友可以...

    拼命_小李4512023-02-06
  • Python对于Python的框架中一些会话程序的管理

    对于Python的框架中一些会话程序的管理

    这篇文章主要介绍了对于Python的框架中一些会话程序的管理,会话的实现是Python框架的基本功能,本文主要讲述了对其的一些管理维护要点,需要的朋友可以参...

    脚本之家4072020-06-09
  • PythonPython处理时间日期坐标轴过程详解

    Python处理时间日期坐标轴过程详解

    这篇文章主要介绍了Python处理时间日期坐标轴过程详解,当日期数据作为图表的坐标轴时通常需要特殊处理,应为日期字符串比较长,容易产生重叠现象...

    微岩5562021-07-21
  • Python分享给Python新手们的几道简单练习题

    分享给Python新手们的几道简单练习题

    这篇文章主要给学习Python的新手们分享了几道简单练习题,文中给出了详细的示例代码供大家学习参考,对大家的学习或者工作具有一定的参考学习价值,...

    洛柯3272020-12-08