python 下划线的多种应用场景总结

Python下划线的多种应用场景总结

1. 单下划线

在Python中,单下划线前缀的变量、函数、类名等,表示这个名称是内部使用的,不应该被外部使用。具体举例:

1.1 声明私有变量

单下划线经常用来表示私有变量,即只能在类内部访问的变量,例如:

class Demo:
    def __init__(self):
        self._num = 0  # _num是私有变量,可以在类内部调用,但是建议不要在类外部调用

demo = Demo()
print(demo._num)  # 不建议这样写,因为这是访问了类的私有属性

1.2 声明模块级别的代表内部使用的变量

单下划线还可以用在模块中,代表该变量是内部使用的,不希望被导入:

# demo.py
def _test():
    print("This is a private function, you should not call it from outside.")

def test():
    print("This is a public function, you can call it from outside.")

if __name__ == '__main__':
    _test()
    test()
# main.py
from demo import test

test()  # 可以被导入
demo._test()  # 不可以被导入

2. 双下划线

在Python中,双下划线前缀的变量,表示这个名称是私有的,不能被子类继承或覆盖。例如:

class Demo:
    def __init__(self):
        self.__num = 0  # __num是私有变量,不能被子类继承或覆盖

class DemoChild(Demo):
    def __init__(self):
        super().__init__()
        self.__num = 1  # __num是私有变量,覆盖了父类的__num

demo = Demo()
print(demo.__num)  # 报错,__num是私有变量,不能在类外部调用

3. 单下划线和双下划线

单下划线和双下划线的组合方式也非常常见,它们都表示私有的,但是有些特殊用途,例如:

3.1 前后双下划线

以双下划线开头且以双下划线结尾的变量表示Python中的魔法方法或特殊方法。这些方法是Python内置方法,提供了一些直接操作类对象的界面,例如:

class Demo:
    def __init__(self, value):
        self.__value = value

    def __repr__(self):
        return f"<Demo obj with value {self.__value}>"

demo = Demo(10)
print(demo)  # <Demo obj with value 10>

3.2 前面单下划线加双下划线

以单下划线和双下划线开头的变量表示弱私有变量,即可以被子类继承或覆盖,但是不建议这样做。例如:

class Demo:
    def __init__(self):
        self._Demo__value = 0  # 不建议在类外部直接使用

class DemoChild(Demo):
    def __init__(self):
        super().__init__()
        self._Demo__value = 1  # 覆盖了Demo的__value

demo = Demo()
print(demo._Demo__value)  # 可以被调用

总结

在Python中,通过单下划线和双下划线的使用,可以表示变量的私有性和特殊性。合理地使用下划线,能够提高代码的可读性和可维护性。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python 下划线的多种应用场景总结 - Python技术站

(0)
上一篇 2023年5月14日
下一篇 2023年5月14日

相关文章

  • Python中的函数参数传递问题

    那我们来详细讲解一下“Python中的函数参数传递问题”的攻略吧。首先,Python的函数参数传递可以分为两种情况,分别是值传递和引用传递。 值传递 当我们将一个变量作为参数传递给函数时,Python会在内存中复制这个变量的值,然后将这个值传递给函数。在函数中,对这个变量的修改不会影响到原始的变量。具体来说,我们看下面的代码示例: def my_func(x…

    python 2023年5月13日
    00
  • python 文件读写操作示例源码解读

    下面我将详细讲解一下“python 文件读写操作示例源码解读”的完整攻略。 1. 文章概述 本篇文章主要介绍Python文件读写操作示例的源码解读。内容包括文件读写模式、文件对象的常用方法、文件指针的操作,以及两个相关的示例。 2. 文件读写模式 在Python中,文件读写操作需要使用open()函数,该函数有多个参数,其中一个必须参数是文件名,还有一个可选…

    python 2023年5月31日
    00
  • Python实现PDF文字识别提取并写入CSV文件

    下面提供一个完整的攻略来实现Python实现PDF文字识别提取并写入CSV文件的功能。 步骤一:安装必要的Python库 为了实现PDF文字识别提取并写入CSV文件的功能,我们需要使用Python的第三方库,包括:pdfminer.six、PyPDF2、tesseract、pandas等。首先我们需要在终端执行以下命令,安装必要的Python库: pip i…

    python 2023年5月19日
    00
  • Python中用xlwt制作表格实例讲解

    以下是Python中用xlwt制作表格实例讲解的完整实例教程: 目录 xlwt模块简介 创建Excel文件 创建工作表 添加数据到工作表 保存Excel文件 完整实例演示 示例说明 1. xlwt模块简介 xlwt是Python中的第三方库,用于创建和操作.xls格式(Excel 97-2003)文件。 2. 创建Excel文件 首先需要导入xlwt模块,并…

    python 2023年5月13日
    00
  • python获取mp3文件信息的方法

    当我们需要处理mp3文件时,通常需要获取一些元数据,例如音频时长、比特率、歌曲名称、演唱者等信息。Python提供了多种库和模块,可以方便地获取mp3文件的信息。下面是获取mp3文件信息的完整攻略: 安装依赖库 使用Python获取mp3文件信息前,需要先安装相应的依赖库。常用的依赖库有mutagen、eyed3和tinytag,这里以mutagen为例进行…

    python 2023年6月2日
    00
  • Python中字符串类型代码的执行函数——eval()、exec()和compile()详解

    Python中字符串类型代码的执行函数——eval()、exec()和compile()详解 在Python中,eval()、exec()和compile()都是用于执行字符串类型代码的函数,它们的使用方法和具体的作用有所不同,下面我们分别进行详细的介绍。 eval函数 eval()函数接收一个字符串参数,将其作为表达式进行解析并计算结果。如果表达式不合法,…

    python 2023年5月31日
    00
  • Python3.6正式版新特性预览

    Python3.6正式版新特性预览 Python3.6正式版带来了很多新的语言特性和标准库改进。在本文中,我们将介绍这些新功能及其用法。 字面量字符串插值 Python3.6中新引入了一种字符串格式化方式——字面量字符串插值。我们可以使用大括号将表达式嵌入到字符串中。 示例: # 基本用法 name = "Alice" age = 20 …

    python 2023年5月13日
    00
  • 为什么嵌套数组在python中复制其元素? [复制]

    【问题标题】:Why does the nested array duplicating its elements in python? [duplicate]为什么嵌套数组在python中复制其元素? [复制] 【发布时间】:2023-04-01 20:55:02 【问题描述】: 看看这段代码 a=[[0]*3]*3 a[1][1]=1 for x in …

    Python开发 2023年4月8日
    00
合作推广
合作推广
分享本页
返回顶部