python 函数、变量中单下划线和双下划线的区别详解

Python 函数、变量中单下划线和双下划线的区别详解

在 Python 中,函数和变量名可以使用单下划线和双下划线来命名,这里详细讲解它们之间的区别。

单下划线

在 Python 中,单下划线 _ 通常用来表示一个变量或函数是私有的,即只能在模块内部使用。

示例:

class MyClass:
    def __init__(self):
        self._private_var = 42

    def _private_method(self):
        print('This is a private method.')

my_class = MyClass()
print(my_class._private_var)  # 这里可以使用单下划线变量
my_class._private_method()  # 这里可以调用单下划线方法

双下划线

在 Python 中,双下划线 __ 用来表示一个变量或函数是私有的,并且 Python 将其重命名,以避免子类和类之外的代码的名称冲突。

示例:

class MyClass:
    def __init__(self):
        self.__private_var = 42

    def __private_method(self):
        print('This is a private method.')

class MyChildClass(MyClass):
    def __init__(self):
        super().__init__()  # 调用父类的初始化方法
        self.__private_var = 999  # 由于父类的 __private_var 已被重命名,这里会创建一个新的私有变量

    def __private_method(self):
        print('This is a child class method.')

my_class = MyClass()
print(dir(my_class))  # 这里查看到 __private_var 和 __private_method 都被 Python 重命名了
print(my_class._MyClass__private_var)  # 这里的访问方式需要使用新的名称
my_class._MyClass__private_method()  # 这里的访问方式需要使用新的名称

my_child_class = MyChildClass()
print(dir(my_child_class))  # 这里查看到 __private_var 和 __private_method 都被 Python 重命名了
print(my_child_class._MyClass__private_var)  # 这里的访问方式需要使用新的名称
my_child_class._MyClass__private_method()  # 这里的访问方式需要使用新的名称

总结

单下划线只是一种编码约定,用于表示一个变量或函数是私有的,但并没有 real privacy,类或模块外的代码仍然可以使用单下划线标记的变量和函数。而双下划线是真正的私有,Python 会将其重命名,以避免名称冲突。

在 Python 中,一般情况下不需要过度使用双下划线私有化变量和函数。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python 函数、变量中单下划线和双下划线的区别详解 - Python技术站

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

相关文章

  • python被修饰的函数消失问题解决(基于wraps函数)

    Python被修饰的函数消失问题解决(基于wraps函数) 在Python中,我们经常会使用装饰器来增强函数的功能,但是使用装饰器可能会引发函数名称、文档字符串、参数列表等元信息丢失的问题。 例如,下面这个被装饰的函数丢失了元信息: def my_decorator(func): def wrapper(): """Wrappe…

    python 2023年5月14日
    00
  • Pandas读取csv时如何设置列名

    当使用Pandas库读取CSV文件时,默认第一行会被当作列名。但是,有些情况下,CSV文件并不包含列名,或者列名并不符合我们的要求。这时候需要手动设置列名。 下面是Pandas读取CSV文件并设置列名的完整攻略,包括两个示例说明: 1. 安装和导入Pandas库 首先需要通过pip安装Pandas库,命令如下: pip install pandas 安装完成…

    python 2023年6月3日
    00
  • Python Matplotlib通过plt.subplots创建子绘图

    当我们需要在一个图形中绘制多个子图时,可以使用Python Matplotlib库通过plt.subplots创建子绘图。 创建子图 我们首先需要导入Matplotlib库: import matplotlib.pyplot as plt 然后,使用plt.subplots()函数创建一个新的图形和子图: fig, ax = plt.subplots() 通…

    python 2023年5月18日
    00
  • python使用Image处理图片常用技巧分析

    Python使用Image处理图片常用技巧分析 介绍 Python中的Image模块,在处理图片的时候有很多种方法和技巧。在本篇攻略中,我们将会介绍一些处理图片常用的技巧和方法,包括读取和保存图片、改变图片大小、裁剪和粘贴图片、旋转和翻转图片、改变图片的亮度、对比度、色调和饱和度、模糊图片等等。 读取图片和保存图片 首先,我们需要学习如何读取图片和保存图片。…

    python 2023年5月18日
    00
  • 浅析python 中大括号中括号小括号的区分

    针对“浅析python中大括号中括号小括号的区分”,我主要介绍以下三个方面: 大括号:{} 在Python中,大括号“{}”表示字典类型(dic,Dictionary)。字典结构采用键值对形式存储,例如: # 创建一个空字典 dict1 = {} # 创建一个有键值对的字典 dict2 = {‘name’: ‘张三’, ‘age’: 18, ‘gender’…

    python 2023年5月14日
    00
  • Python实现简单网页图片抓取完整代码实例

    下面是详细的Python实现简单网页图片抓取完整代码实例攻略: 1. 背景介绍 在开发网站时,可能需要从某个网站抓取图片来丰富内容和美化页面,本文将介绍如何使用Python实现简单网页图片抓取,帮助大家快速抓取所需图片。 2. 环境准备 在进行Python实现简单网页图片抓取之前,需要准备好以下环境: Python 3 requests 库 Beautifu…

    python 2023年5月19日
    00
  • 如何在Python中计算残余的平方和

    计算残余的平方和是统计学中一个重要的概念,通常用于评估模型的拟合程度。在Python中,计算残余的平方和可以使用统计学模型库statsmodels中的OLS模型来实现。 以下是计算残余平方和的步骤: 1.导入必要的库:statsmodels和numpy import numpy as np import statsmodels.api as sm 2.生成样…

    python-answer 2023年3月25日
    00
  • Python快速实现简易贪吃蛇小游戏的示例代码

    我来为你详细讲解“Python快速实现简易贪吃蛇小游戏的示例代码”的完整攻略。下面是具体的步骤: 步骤1. 导入必要的模块 在程序开始前,先导入需要用到的模块,包括pygame和random模块。代码如下: import pygame import random 步骤2. 定义常量 定义游戏窗口的宽度和高度、蛇的速度、蛇头的大小和蛇身的大小等参数。代码如下:…

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