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

yizhihongxing

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中用于解析HTML、XML等文本数据。本攻略将详细讲解如何使用正则达式匹配字符串中的数字。 正则表达式基本语法 正则表达式是由普通字符和特殊字符组成的字符串,用于描述一类字符串的模式。下面是一些常用的正则表达式特殊字符: .:匹配任意字符,除换行符。 *:匹…

    python 2023年5月14日
    00
  • PyDev 插件找不到 python 3.4

    【问题标题】:The PyDev plugin can not find python 3.4PyDev 插件找不到 python 3.4 【发布时间】:2023-04-07 21:42:01 【问题描述】: 我一直在ubuntu 13上使用eclipse 3.8+PyDev+python 3.3,最近升级ubuntu到14.04。看来ubuntu 14.0…

    Python开发 2023年4月8日
    00
  • Python中py文件引用另一个py文件变量的方法

    在Python中,我们可以使用import语句引用其他Python文件中的变量。这样可以使我们的代码更加模块化和可维护。本攻略将介绍如何在Python中引用其他Python文件中的变量。 方法一:使用import语句 我们可以使用import语句引用其他Python文件中的变量。以下是一个示例代码: file1.py x = 10 y = 20 file2.…

    python 2023年5月15日
    00
  • 详解Python自建logging模块

    详解Python自建logging模块 在Python中,logging模块是一个非常常用的模块,它可以帮助我们记录程序运行时的信息,包括错误、警告、调试信息等。本文将详细介绍如何使用Python自建logging模块,包括如何配置logging模块、如何记录日志信息、如何输出日志信息等。 配置logging模块 在使用logging模块之前,我们先配置lo…

    python 2023年5月14日
    00
  • python3+PyQt5使用数据库表视图

    让我们来详细讲解一下”Python3+PyQt5使用数据库表视图”的完整攻略。 一、准备工作 在使用Python3+PyQt5进行数据库表视图的开发前,需要以下准备工作: 安装Python3,可以在官方网站下载:https://www.python.org/downloads/ 安装PyQt5,可以在命令行使用pip进行安装:pip install PyQt…

    python 2023年6月3日
    00
  • 详解Python 获取原始数据

    接下来我会为您讲解Python获取原始数据的完整攻略,包括使用标准库和第三方库进行网络请求和解析HTML等步骤。 使用标准库 Python标准库中 urllib 库和 urllib2 库提供了进行网络请求的基本功能,可以通过以下步骤获取原始数据: 导入 urllib 库和 urllib2 库:在代码文件开始处添加以下行: import urllib impo…

    python-answer 2023年3月25日
    00
  • python 制作一个gui界面的翻译工具

    制作一个GUI界面的翻译工具可以分为以下几个步骤: 1. 确定需求 首先,你需要明确你的翻译工具的需求,例如它能够翻译哪些语言,是否需要支持多种翻译引擎等。 2. 选择GUI库 Python中有许多GUI库可供选择,例如Tkinter、PyQt、wxPython等。选择其中一个符合需求的GUI库,如果不确定可以上网查阅相关资料或者进行对比试用。 3. 集成翻…

    python 2023年6月5日
    00
  • python爬虫今日热榜数据到txt文件的源码

    在本攻略中,我们将介绍如何使用Python爬虫获取今日热榜数据,并将数据保存到txt文件中。以下是一个完整攻略,包括两个示例。 步骤1:分析网页结构 首先,我们需要分析今日热榜页面的HTML结构。我们可以使用Chrome浏览器的开发者工具来查看页面的HTML结构。 在Chrome浏览器中,我们可以按F12键打开开发者工具。然后,我们可以选择“Elements…

    python 2023年5月15日
    00
合作推广
合作推广
分享本页
返回顶部