Python 中的資料隱藏
資料隱藏也稱為資料封裝,它是向用戶隱藏應用程式特定部分實現的過程。資料隱藏結合了類的成員,從而限制了對類成員的直接訪問。
資料隱藏在使應用程式更安全和更健壯方面發揮著重要作用。
Python 中的資料隱藏
Python 中的資料隱藏是一種技術,用於防止在類中初始化的方法和變數被類外部直接訪問。隱藏必要的成員函式可以防止終端使用者檢視程式的實現,從而提高安全性。使用資料隱藏還有助於透過減少相互依賴關係來降低程式的複雜性。
在 Python 中,可以透過將類成員宣告為私有來實現資料隱藏,方法是在成員名稱前加上雙下劃線 (__) 作為字首。
語法
在 Python 中隱藏資料的語法如下:
__variablename
示例 1 - 無類名
在此示例中,資料隱藏是透過將類中的變數宣告為私有來執行的:
class hidden: # declaring private member of class __hiddenVar = 0 def sum(self, counter): self.__hiddenVar += counter print (self.__hiddenVar) hiddenobj = hidden() hiddenobj.sum(5) hiddenobj.sum(10) # print statement throws error as __hiddenVar is private print(hiddenobj.__hiddenVar)
輸出
以上程式碼的輸出如下:
5 15 Traceback (most recent call last): File "main.py", line 12, in <module> print(hiddenobj.__hiddenVar) AttributeError: 'hidden' object has no attribute '__hiddenVar'
示例 2 - 有類名
在以下示例中,隱藏的資料可以直接在類外部訪問:
class hidden: # declaring hiddenVar private by using __ __hiddenVar = 0 def sum(self, counter): self.__hiddenVar += counter print (self.__hiddenVar) hiddenobj = hidden() hiddenobj.sum(5) hiddenobj.sum(10) # adding class name before variable to access the variable outside the class print(hiddenobj._hidden__hiddenVar)
輸出
以上程式碼的輸出如下 −
5 15 15
示例 3
讓我們再看一個使用類的私有和受保護成員來實現資料隱藏的示例。
class Employee: # Hidden members of the class __password = 'private12345' # Private member _id = '12345' # Protected member def Details(self): print("ID: ",(self._id)) print("Password: ",(self.__password)+"\n") hidden = Employee() hidden.Details() print(hidden._Employee__password)
輸出
以上程式碼的輸出為:
ID: 12345 Password: private12345 private12345
在以上輸出中,Details 函式是 Employee 類的組成部分,因此它可以訪問類的私有和受保護成員。這就是為什麼可以在不使用類名的情況下訪問 id 和 password 的原因。但是,在最後的 print 語句中,需要使用類名來訪問 password,因為私有成員的作用域限制在 Employee 類內部。
資料隱藏的優點
- 透過封裝重要資料來增強安全性。
- 透過將類內的物件與無用資料斷開連線,向終端使用者隱藏不相關的資訊。
- 防止建立指向錯誤資料的連結。
廣告