欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python 變量教程私有變量詳解

 更新時間:2022年08月23日 09:33:39   作者:海擁???????  
這篇文章主要介紹了Python 變量教程私有變量詳解,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下

前言

Python 中,不存在只能在對象內(nèi)部訪問的“私有”實(shí)例變量。然而,大多數(shù) Python 代碼和編碼器都遵循一個約定,即以下劃線為前綴的名稱,例如 _geek應(yīng)被視為 API 或任何 Python 代碼的非公共部分,無論它是函數(shù)還是方法,或數(shù)據(jù)成員。在經(jīng)歷這個過程時,我們還將嘗試?yán)斫飧鞣N形式的尾隨下劃線的概念,例如,for _ in range(10), init(self)。 

重整及其工作原理

在 Python 中,有一種叫做名稱修飾的東西,這意味著對類私有成員的有效用例的支持有限,基本上是為了避免名稱與子類定義的名稱發(fā)生名稱沖突。__geek 形式的任何標(biāo)識符(至少兩個前導(dǎo)下劃線或最多一個尾隨下劃線)都將替換為 _classname__geek,其中 classname 是當(dāng)前類名,前導(dǎo)下劃線被去除。只要它出現(xiàn)在類的定義中,這種修飾就完成了。這有助于讓子類覆蓋方法而不破壞類內(nèi)方法調(diào)用。 
讓我們看一下這個例子,并嘗試找出這個下劃線是如何工作的: 

# 說明重整工作原理的 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)

修改規(guī)則的設(shè)計(jì)主要是為了避免事故,但仍然可以訪問或修改被認(rèn)為是私有的變量。這甚至在特殊情況下很有用,例如在調(diào)試器中。

_單前導(dǎo)下劃線

因此,基本上方法、函數(shù)或數(shù)據(jù)成員開頭的下劃線意味著您不應(yīng)該訪問此方法,因?yàn)樗皇?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 是“私有的”,因此不應(yīng)訪問它。

__雙前導(dǎo)下劃線

一開始,兩條下劃線引起了很多混亂。這是關(guān)于語法而不是約定。雙下劃線將破壞類的屬性名稱,以避免類之間的屬性名稱沖突。

例如:

# 說明開頭雙下劃線如何工作的 Python 代碼
class Geek:
	def _single_method(self):
		pass
	def __double_method(self): # 用于重整
		pass
class Pyth(Geek):
	def __double_method(self): # 用于重整
		pass

雙前導(dǎo)和雙尾下劃線

還有另一種雙前導(dǎo)和尾隨下劃線的情況。我們在使用特殊變量或方法(稱為“魔術(shù)方法”)時遵循這一點(diǎn),例如 leninit。這些方法為名稱提供了特殊的句法特征。例如,file 表示 Python 文件的位置,eq 在執(zhí)行 a == b 表達(dá)式時執(zhí)行。 

例子:

# 說明雙前導(dǎo)和雙尾下劃線工作的 Python 代碼
class Geek:

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

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

到此這篇關(guān)于Python 變量教程私有變量詳解的文章就介紹到這了,更多相關(guān)Python 私有變量內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python實(shí)現(xiàn)視頻自動打碼的示例代碼

    Python實(shí)現(xiàn)視頻自動打碼的示例代碼

    我們在觀看視頻的時候,有時候會出現(xiàn)一些奇怪的馬賽克,影響我們的觀影體驗(yàn),那么這些馬賽克是如何精確的加上去的呢?本文就來為大家詳細(xì)講講
    2022-04-04
  • Python SQLite3簡介

    Python SQLite3簡介

    這篇文章主要為大家詳細(xì)介紹了Python SQLite3的簡單介紹以及使用方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-02-02
  • Keras多線程機(jī)制與flask多線程沖突的解決方案

    Keras多線程機(jī)制與flask多線程沖突的解決方案

    這篇文章主要介紹了Keras多線程機(jī)制與flask多線程沖突的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-05-05
  • Python實(shí)現(xiàn)網(wǎng)絡(luò)自動化eNSP

    Python實(shí)現(xiàn)網(wǎng)絡(luò)自動化eNSP

    這篇文章主要介紹了Python實(shí)現(xiàn)網(wǎng)絡(luò)自動化eNSP,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-05-05
  • python 動態(tài)遷移solr數(shù)據(jù)過程解析

    python 動態(tài)遷移solr數(shù)據(jù)過程解析

    這篇文章主要介紹了python 動態(tài)遷移solr數(shù)據(jù)過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-09-09
  • Python產(chǎn)生batch數(shù)據(jù)的操作

    Python產(chǎn)生batch數(shù)據(jù)的操作

    這篇文章主要介紹了Python產(chǎn)生batch數(shù)據(jù)的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • Python @property原理解析和用法實(shí)例

    Python @property原理解析和用法實(shí)例

    這篇文章主要介紹了Python @property原理解析和用法實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-02-02
  • Python+Xlwings 刪除Excel的行和列

    Python+Xlwings 刪除Excel的行和列

    這篇文章主要介紹了Python+Xlwings 刪除Excel的行和列的方法,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2020-12-12
  • Python 70行代碼實(shí)現(xiàn)簡單算式計(jì)算器解析

    Python 70行代碼實(shí)現(xiàn)簡單算式計(jì)算器解析

    這篇文章主要介紹了Python 70行代碼實(shí)現(xiàn)簡單算式計(jì)算器解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-08-08
  • python操作配置文件實(shí)戰(zhàn)記錄

    python操作配置文件實(shí)戰(zhàn)記錄

    這篇文章主要給大家介紹了關(guān)于python操作配置文件的相關(guān)資料,配置文件是為程序配置參數(shù)和初始設(shè)置的文件,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-11-11

最新評論