广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python变量教程私有变量详解
  • 612
分享到

Python变量教程私有变量详解

2024-04-02 19:04:59 612人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

目录前言重整及其工作原理_单前导下划线__双前导下划线双前导和双尾下划线前言 python 中,不存在只能在对象内部访问的“私有”实例变量。然而,大多数 Py

前言

python 中,不存在只能在对象内部访问的“私有”实例变量。然而,大多数 Python 代码和编码器都遵循一个约定,即以下划线为前缀的名称,例如 _geek应被视为 api 或任何 Python 代码的非公共部分,无论它是函数还是方法,或数据成员。在经历这个过程时,我们还将尝试理解各种形式的尾随下划线的概念,例如,for _ in range(10), init(self)。 

重整及其工作原理

在 Python 中,有一种叫做名称修饰的东西,这意味着对类私有成员的有效用例的支持有限,基本上是为了避免名称与子类定义的名称发生名称冲突。__geek 形式的任何标识符(至少两个前导下划线或最多一个尾随下划线)都将替换为 _classname__geek,其中 classname 是当前类名,前导下划线被去除。只要它出现在类的定义中,这种修饰就完成了。这有助于让子类覆盖方法而不破坏类内方法调用。 
让我们看一下这个例子,并尝试找出这个下划线是如何工作的: 

# 说明重整工作原理的 Python 代码
class Map:
	def __init__(self, iterate):
		self.list = []
		self.__geek(iterate)
	def geek(self, iterate):
		for item in iterate:
			self.list.append(item)

	# 原始 geek() 方法的私有副本
	__geek = geek

class MapSubclass(Map):
	
	# 为 geek() 提供了新的签名,但不会破坏 __init__()
	def geek(self, key, value):	
		for i in zip(keys, value):
			self.list.append(i)

修改规则的设计主要是为了避免事故,但仍然可以访问或修改被认为是私有的变量。这甚至在特殊情况下很有用,例如在调试器中。

_单前导下划线

因此,基本上方法、函数或数据成员开头的下划线意味着您不应该访问此方法,因为它不是 API 的一部分。

让我们看一下这段代码:

# 说明单下划线如何工作的 Python 代码
def _get_errors(self):
	if self._errors is None:
		self.full_clean()
	return self._errors

errors = property(_get_errors)

该片段取自 Django 源代码 (djanGo/fORMs/forms.py)。这表明错误是属性,也是 API 的一部分,但方法 _get_errors 是“私有的”,因此不应访问它。

__双前导下划线

一开始,两条下划线引起了很多混乱。这是关于语法而不是约定。双下划线将破坏类的属性名称,以避免类之间的属性名称冲突。

例如:

# 说明开头双下划线如何工作的 Python 代码
class Geek:
	def _single_method(self):
		pass
	def __double_method(self): # 用于重整
		pass
class Pyth(Geek):
	def __double_method(self): # 用于重整
		pass

双前导和双尾下划线

还有另一种双前导和尾随下划线的情况。我们在使用特殊变量或方法(称为“魔术方法”)时遵循这一点,例如 leninit。这些方法为名称提供了特殊的句法特征。例如,file 表示 Python 文件的位置,eq 在执行 a == b 表达式时执行。 

例子:

# 说明双前导和双尾下划线工作的 Python 代码
class Geek:

	# '__init__' 用于初始化,这是一个特殊的方法
	def __init__(self, ab):
		self.ab = ab

	# 自定义特殊方法。 尽量不要使用它
	def __custom__(self):
		pass

到此这篇关于Python 变量教程私有变量详解的文章就介绍到这了,更多相关Python 私有变量内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Python变量教程私有变量详解

本文链接: https://www.lsjlt.com/news/120171.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python变量教程私有变量详解
    目录前言重整及其工作原理_单前导下划线__双前导下划线双前导和双尾下划线前言 Python 中,不存在只能在对象内部访问的“私有”实例变量。然而,大多数 Py...
    99+
    2022-11-11
  • python类的私有变量
    1.类的私有变量和私有方法 1)_xx 以单下划线开头的表示的是protected类型的变量。即保护类型只能允许其本身与子类进行访问。若内部变量标示,如:当使用“from Mimport”时,不会将以一个下划线开头的对象引入。 2)__xx...
    99+
    2023-01-31
    变量 python
  • Python变量教程之全局变量和局部变量
    目录前言全局变量全局关键字前言 全局变量是那些没有在任何函数内部定义并具有全局范围的变量,而局部变量是那些在函数内部定义的变量,其范围仅限于该函数。换句话说,我们可以说局部变量只能在...
    99+
    2022-11-11
  • Python中可变变量与不可变变量详解
    目录一 、常见的变量分类1、变量的创建二、变量分类1、、常见的不可变变量2、常见的可变变量三、拷贝的差别四、参数传递的差别前言: C++不同于Python的显著特点,就是有指针和引用...
    99+
    2022-11-12
  • Python学习之私有函数,私有变量及封装详解
    目录什么是私有函数和私有变量私有函数与私有变量的定义方法Python 中的封装面向对象编程小练习通过学习私有函数与私有变量,可以更好的完善 类的开发 ,从而丰满我们的场景与实现方案。...
    99+
    2022-11-13
  • python教程(二)·变量
    什么是变量?在百度百科中,变量的解释是: 变量来源于数学,是计算机语言中能储存计算结果或能表示值抽象概念。变量可以通过…… 这是一段很长很长的解释,其实,作者认为没必要这么机械式的去理解。简单说,变量就是一个“盒子”,这个“盒子”可...
    99+
    2023-01-30
    变量 教程 python
  • 详解python的变量
    目录1.Python 变量的概述:2.Python 变量的命名3.Python 变量赋值3.1 Python 变量赋值概述3.2 Python 变量的基本赋值格式3.3 Python...
    99+
    2022-11-12
  • C语言基础全局变量与局部变量教程详解
    目录一:局部变量与全局变量1.1:局部变量1.2:全局变量1.3:代码解释1.4:const修饰的变量的修改二:静态局部变量与静态全局变量2.1:static关键字2.2:静态局部变...
    99+
    2022-11-12
  • 详解python中的变量
    目录变量变量的分类:赋值变量的命名规则:总结变量变量的分类:赋值变量的命名规则:总结变量 一个由程序员或用户定义的量且在程序中可能发生改变的量 #变量是所有程序的起点 变量的分类: ...
    99+
    2022-11-12
  • Python变量命名规则和定义变量详解
    目录一、定义变量二、定义变量的规则总结 一、定义变量 语法规则: 变量名 = 值 定义变量的语法规则中间的‘=',并不是数学中等于号的意思,在编程语言中而是赋值的意思。赋值:其...
    99+
    2022-11-12
  • python私有变量的本质是什么
    小编给大家分享一下python私有变量的本质是什么,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!python是什么意思Python是一种跨平台的、具有解释性、编译...
    99+
    2023-06-14
  • Python私有函数,私有变量及封装的方法
    这篇“Python私有函数,私有变量及封装的方法”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Python私有函数,私有变量...
    99+
    2023-06-29
  • 改变C++中私有变量成员的值
    没有引用的情况: #include #include using namespace std;class Person{public: queueque;public: queue getQueue() { ...
    99+
    2023-09-08
    c++ 算法 开发语言
  • 详解shell 变量
    1.简介 变量是任何一种编程语言都必不可少的组成部分,变量用来存放各种数据。脚本语言在定义变量时通常不需要指明类型,直接赋值就可以,Shell变量也遵循这个规则。 在Bash shell 中,每一个变量的值都是字符串,无...
    99+
    2022-06-04
    shell 变量
  • Python 局部变量global详解
    目录一、作用域二、局部作用域三、全局作用域四、nonlocal作用域1、使用nonlocal2、就近原则3、函数执行顺序4、循环、判断代码块中作用域问题一、作用域 Local:局部作...
    99+
    2022-11-11
  • Shell编程之特殊变量和扩展变量详解
    特殊变量 在Shell中的特殊变量主要分别两种位置参数变量、状态变量两种。 位置参数变量 Shell中的位置参数变量主要是指0、0、1、$#等,主要用于从命令行、函数或脚本执行等地方传递参数。详细说明如下所示: ...
    99+
    2022-06-04
    shell特殊变量 shell变量 shell定义变量
  • Python:环境变量配置方法 详细教程
     最近有人问我如何配置python环境变量,这篇文章就向大家介绍python环境变量配置方法。 python环境变量的配置方法:首先鼠标右键此电脑,选择属性;然后点击高级系统设置,点击环境变量;接着点击path进行编辑,在path中添加...
    99+
    2023-09-02
    python 开发语言
  • JavaScript如何实现私有变量
    这篇文章主要介绍JavaScript如何实现私有变量,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!私有变量的实现使用 Proxy 代理所有含有 _ 开头的变量,使其不可被外部访问通过闭包的形式保存...
    99+
    2023-06-27
  • Python变量名详细规则详细变量值介绍
    Python需要使用标识符给变量命名,其实标识符就是用于给程序中变量、类、方法命名的符号(简单来说,标识符就是合法的名称 标识符需要以字母或下划线_开头,可以和字母、数字、下划线进行...
    99+
    2022-11-12
  • Python变量和字符串详解
    几个月前,我开始学习个人形象管理,从发型、妆容、服饰到仪表仪态,都开始做全新改造,在塑造个人风格时,最基础的是先了解自己属于哪种风格,然后找到参考对象去模仿,可以是自己欣赏的人、明星或模特等,直至最后去创新...
    99+
    2022-06-04
    字符串 变量 详解
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作