資料隱藏在 Python 類中如何運作?


資料隱藏

在 Python 中,我們在屬性名前使用雙下劃線,以使它們不可訪問/私有或隱藏它們。

以下程式碼顯示了變數 __hiddenVar 如何被隱藏。

示例

class MyClass:
    __hiddenVar = 0
    def add(self, increment):
       self.__hiddenVar += increment
       print (self.__hiddenVar)
myObject = MyClass()
myObject.add(3)
myObject.add (8)
print (myObject.__hiddenVar)

輸出 

3
Traceback (most recent call last):
11
  File "C:/Users/TutorialsPoint1/~_1.py", line 12, in <module>
    print (myObject.__hiddenVar)
AttributeError: MyClass instance has no attribute '__hiddenVar'

在以上程式中,我們嘗試在類外使用物件訪問隱藏變數,這會引發異常。

我們可以使用如下特殊語法訪問隱藏的屬性值:

示例

class MyClass:
    __hiddenVar = 12
    def add(self, increment):
       self.__hiddenVar += increment
       print (self.__hiddenVar)
myObject = MyClass()
myObject.add(3)
myObject.add (8)
print (myObject._MyClass__hiddenVar)

輸出 

15
23
23

雖然可以從類外訪問私有方法,但不像普通情況下那麼容易。在 Python 中,沒有什麼是真正私有的;私有方法和屬性的名稱會在執行時被破壞和復原,以使其無法透過給定名稱來訪問它們。

更新於: 15-6-2020

3K+ 檢視次數

開啟你的職業生涯

完成此課程以獲得認證

入門
廣告
© . All rights reserved.