Python中的受保護變數


在程式設計中,受保護變數的概念用於建立訪問控制系統。在這個系統中,我們建立了一個訪問控制的層次結構或級別。這個概念鞏固了面向物件程式設計的基礎。受保護變數的技術含義保持不變,但語法和行為在不同的程式語言之間可能有所不同。

Python遵循訪問和操作屬性和方法的常規邏輯,但訪問控制的表示和執行程度略有不同。

理解Python中的受保護變數

Python中的受保護變數管理屬性和方法的內部使用。這些變數建立了一種約定,驅動屬性訪問的邏輯。在Python中,我們可以使用“下劃線(_)”關鍵字宣告受保護變數。

這些關鍵字在類中宣告方法或建構函式時傳遞。我們在變數前新增下劃線關鍵字作為字首,使其成為“受保護的”

語法

以下是宣告受保護變數的語法。

def __init__(self, player_name):
   self._player_name = player_name

這裡,“__init__()”方法初始化物件的屬性,並在建立物件時呼叫。我們使用“self”關鍵字來訪問和操作屬性和方法。

我們建立受保護變數是為了告訴其他在程式碼庫上工作的開發者以不同的方式處理程式碼的這一部分,因為它的訪問是有限制的。讓我們討論一下在程式碼中實現受保護變數的重要性。

受保護變數的重要性

使用受保護變數的核心思想是將程式碼的某些部分宣告為“受保護的”,即防止從外部環境直接訪問變數。我們可以以細緻的方式編寫程式碼並促進資料封裝。

  • 受保護變數幫助我們在類介面內建立不同型別的功能單元。每個功能單元可以有自己的實現規則。

  • 受保護變數提供受控的方法(getter和setter),可以訪問類中隱藏或封裝的資訊。程式碼庫變得強大且易於閱讀,因為它允許開發者以不同的方式處理程式碼的不同部分。

  • 受保護變數還允許我們更改內部實現細節,而不會影響外部類/介面。使用受保護變數,我們可以提供自文件,可以解釋與類及其資料互動的指令。

現在我們已經瞭解了Python中受保護變數的基本原理和重要性,讓我們討論一個示例並應用這些概念。

透過示例理解

我們將考慮一個示例,在這個示例中,我們將為玩家資料管理系統編寫程式碼。我們將引入受保護變數來封裝玩家資訊,例如:玩家姓名、評分、球隊名稱薪水。我們還將使用裝飾器(@property)來初始化getter方法。

這些方法將允許編碼器從外部訪問受保護變數,而裝飾器將防止意外修改內部資料。受保護變數和裝飾器的組合將幫助我們建立一個受控的介面。

我們還將建立一個方法,根據玩家的評分修改玩家的薪水。類物件將透過裝飾器訪問受保護變數,提供封裝的薪水計算邏輯。

示例

以下是用受保護變數的示例。

class PlayerProfile:
   def __init__(self, player_name, team_name, Rating):
      self._player_name = player_name
      self._team_name = team_name
      self._Rating = Rating
      self._Salary = 0
   @property
   def player_name(self):
      return self._player_name
   @property
   def team_name(self):
      return self._team_name
   @property
   def Rating(self):
      return self._Rating
   @property
   def Salary(self):
      return self._Salary
   def ManagingSalary(self):
      self._Salary = self._Rating * 200000
OBJ = PlayerProfile("Manoj Shukla", "Wolves", 8)
print(f"The player name is: {OBJ.player_name}")
print(f"The team name is: {OBJ.team_name}")
print(f"The player Rating is: {OBJ.Rating}")
OBJ.ManagingSalary()
print(f"The player Salary is: {OBJ.Salary} USD")

輸出

The player name is: Manoj Shukla
The team name is: Wolves
The player Rating is: 8
The player Salary is: 1600000 USD

與其他語言的比較

控制訪問的基本思想在所有程式語言中都是相同的,但是我們實現邏輯的方式有所不同。

在大多數程式語言中,受保護變數只能在類層次結構內訪問,但Python允許從類外部訪問受保護變數。雖然不鼓勵這樣做,因為它違反了約定。

關鍵區別在於受保護變數的宣告。在C++和Java中,我們顯式地使用訪問修飾符/說明符,而在Python中,我們使用下劃線關鍵字來宣告受保護變數。

結論

本文介紹了一個重要的程式設計概念,我們討論了受保護變數的基本原理及其在Python中的實現。我們討論了類層次結構的程式設計約定以及受保護變數如何幫助我們生成封裝的程式碼。我們透過討論一個示例並與其他程式語言進行比較,進一步增強了我們的理解。

更新於:2024年1月19日

731 次瀏覽

開啟您的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.