通俗易懂详解Python基础五种下划线作用

yizhihongxing

以下是 “通俗易懂详解Python基础五种下划线作用”的完整攻略。

一、Python中的下划线

Python中的下划线有多种用途,包括变量名、函数名、类名等等。在Python中,下划线主要有五种不同的用法,分别是单前导下划线、单末尾下划线、双前导下划线、双前导双下划线和双前导后末尾双下划线。

二、单前导下划线

单前导下划线用来指示一个变量或者方法是“非公有的”,即不应该被外部使用。在Python中,没有真正的“私有”变量或方法,通过在变量或方法名前加上单前导下划线,可以起到隐藏其真正含义的作用,但是仍然可以从类外部访问这些属性。

示例代码:

class Person:
    def __init__(self, name, age):
        self._name = name
        self._age = age

    def get_name(self):
        return self._name

p = Person("Tom", 25)
print(p.get_name()) # 输出 Tom
print(p._name) # 输出 Tom

在上面的示例代码中,我们通过使用单前导下划线来指示 name 和 age 是私有属性。在类外可以使用 _name 来访问该属性,但是在类外最好使用 get_name 方法来访问 name 属性,以保证代码的封装性和可维护性。

三、单末尾下划线

单末尾下划线用来避免与Python关键字发生冲突。例如,如果你想把变量命名为“class”,你可以使用“class_”来避免语法错误。

示例代码:

class_ = "Python Basic"
print(class_)

输出:

Python Basic

四、双前导下划线

双前导下划线用来指示一个方法或属性是“私有的”。在使用双前导下划线定义的方法或属性只能在类的内部使用,而不可以在子类和类外部使用。如果在类外部使用,会抛出 AttributeError 异常。

示例代码:

class Person:
    def __init__(self, name, age):
        self.__name = name
        self.__age = age

    def __get_name(self):
        return self.__name

p = Person("Tom", 25)
print(p._Person__get_name()) # 输出 Tom
print(p.__name) # 抛出 AttributeError 异常

在上面的示例代码中,我们使用双前导下划线来定义 __name__age 两个私有属性,在类内部使用 __get_name 方法来访问 __name 属性,在类外无法直接访问 __name 属性,如果在类外使用会抛出 AttributeError 异常。

五、双前导双下划线

双前导双下划线用来避免子类覆盖父类的方法,在子类中同名方法会覆盖父类的同名方法。通过在方法名前添加双前导下划线,可以使方法成为私有方法,从而在子类中避免被覆盖。

示例代码:

class Person:
    def __init__(self, name):
        self.__name = name

    def __get_name(self):
        return self.__name

    def get_name(self):
        return self.__get_name()

class Student(Person):
    def __get_name(self):
        return "Student's Name: "+ self._Person__get_name()

s = Student("Tom")
print(s.get_name()) # 输出 Student's Name: Tom

在上面的示例代码中,我们创建了一个 Person 类,并在其中定义了私有方法 __get_name 和公有方法 get_name。在子类 Student 中同样定义了同名方法 __get_name,但是由于它被定义成了私有方法,所以不会覆盖父类中的同名方法,最终在执行 s.get_name() 时,执行的是子类 Student 中的私有方法,返回的是 "Student's Name: Tom"。

六、双前导和末尾双下划线

双前导和末尾双下划线的作用是用来命名 Python 的“魔术方法”。这些方法在Python中有特殊的含义,例如 __init____str____repr__ 等等。其中,__init__ 方法用来初始化实例对象,在创建新对象后执行;__str____repr__ 方法用来指示 Python 怎样打印对象,输出对象的文本信息。

示例代码:

class Person:
    def __init__(self, name):
        self.__name = name

    def __str__(self):
        return "Person's Name: " + self.__name

p = Person("Tom")
print(p) # 输出 Person's Name: Tom

在上面的示例代码中,我们定义了一个 __str__ 方法,用来指示 Python 打印对象时应该输出的文本信息。当我们执行 print(p) 时,输出的是 "Person's Name: Tom"。

七、总结

上面介绍的就是Python中下划线的五个作用。其中,单前导下划线和双前导下划线用来指示私有属性或方法;单末尾下划线用来避免关键字冲突;双前导双下划线用来避免子类中同名方法覆盖父类中同名方法;双前导和末尾双下划线用来命名 Python 的魔术方法。

在编写代码时,应该根据实际情况使用合适的下划线,以便代码更加规范、易懂、易于维护。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:通俗易懂详解Python基础五种下划线作用 - Python技术站

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

相关文章

  • 在Python中使用NumPy将Hermite_e系列提高到一个幂数

    将Hermite_e系列提升到一个更高的幂,可以通过NumPy的多项式模块numpy.polynomial.hermite_e实现。下面是详细步骤: 导入所需模块 使用NumPy之前,需要先导入相关模块。因此,我们需要将numpy和numpy.polynomial.hermite_e两个模块导入到Python环境中。 import numpy as np f…

    python-answer 2023年3月25日
    00
  • python中执行shell的两种方法总结

    当需要在Python中执行Shell命令或者脚本时,有两种方法可以使用:os.system()和subprocess.Popen()。 os.system()方法 os.system()允许我们在Python中执行一些简单的Shell命令。例如,我们可以使用os.system()来查找当前工作目录并打印它。 import os os.system(&quot…

    python 2023年6月5日
    00
  • Python利用PyAutoGUI模块实现控制鼠标键盘

    Python利用PyAutoGUI模块实现控制鼠标键盘 简介 PyAutoGUI是一个可以让Python实现自动化GUI控制的模块。它可以通过鼠标、键盘输入和屏幕截图模拟对应的电脑操作,例如:输入键盘、移动鼠标、截图等。它支持Windows、Linux、OS X等多个操作系统。 安装 使用pip命令进行安装: pip install pyautogui 功能…

    python 2023年5月19日
    00
  • python 利用栈和队列模拟递归的过程

    为了利用栈和队列模拟递归的过程,我们需要在代码中模拟递归操作。下面是模拟递归过程的完整攻略: 栈模拟递归过程 利用栈模拟递归的过程,我们需要将递归函数的每一步操作都压入栈中,以便最后在函数返回的时候能够回溯到上一个步骤。下面是用栈模拟递归过程的基本步骤: 初始化栈并将递归函数的第一个参数压入栈中。 在栈不为空的情况下,弹出栈顶的参数,并根据参数决定执行何种操…

    python 2023年6月3日
    00
  • Python安装模块的常见问题及解决方法

    Python安装模块的常见问题及解决方法 在使用Python编程过程中,我们经常需要用到第三方模块。Python模块的安装一般可以通过pip进行,但是在安装过程中可能会遇到一些问题,下面将列出一些常见的问题及其解决方法。 问题一:pip无法连接到远程网站 这个问题的原因通常是由于网络连接问题。如果您的网络连接良好但仍然无法使用pip,请考虑添加一些额外的pi…

    python 2023年5月14日
    00
  • Python爬取肯德基官网ajax的post请求实现过程

    Python爬取肯德基官网ajax的post请求实现过程 肯德基官网是一个常见的网站,我们可以使用Python来爬取它的数据。在爬取肯德基官网时,我们需要使用POST请求来获取数据。本文将详细讲解如何使用Python爬取肯德基官网的数据,并提供两个示例。 环境配置 在使用Python爬取肯德基官网时,我们需要安装requests库。可以使用pip命令来安装r…

    python 2023年5月15日
    00
  • Python下载ts文件视频且合并的操作方法

    下面是详细讲解如何使用 Python 下载 ts 文件视频,并将其合并的操作方法。 0. 前置条件 在进行下面的操作前,需要确保安装了 Python 开发环境以及以下 Python 库: requests tqdm 可以使用 pip 命令安装: pip install requests tqdm 1. 下载 ts 文件 ts 文件下载一般需要使用 GET 请…

    python 2023年5月19日
    00
  • Python3使用requests包抓取并保存网页源码的方法

    以下是关于Python3使用requests包抓取并保存网页源码的方法的攻略: Python3使用requests包抓取并保存网页源码的方法 在Python3中,可以使用requests包抓取网页源码,并将其保存到本地文件中。是Python3使用requests包抓取并保存网页源码的方法的攻略。 使用requests包抓取网页源码 使用requests包可以…

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