Python中的私有方法
在面向物件程式設計中,私有方法是作為訪問修飾符的函式,僅供類內部使用,外部無法訪問。私有方法的功能主要用於封裝,這意味著它們是隱藏的,以防止意外修改和濫用。
私有方法的工作原理
在Python中,表示私有方法的約定是“_”。我們只需要在方法名前新增一個下劃線(_)或兩個下劃線(__)。
-
單個下劃線(_):表示該方法用於內部使用。它仍然可以從類外部訪問。
-
雙下劃線(__):不能透過函式名從函式外部訪問。它仍然可以透過“名稱改編”方法訪問,這使得從類外部訪問更加困難。
使用私有方法
要定義私有方法,我們必須在成員名前新增一個下劃線(“_”)或兩個下劃線(“__”)。如果使用單個下劃線,我們只能在類內訪問它。而使用雙下劃線,則允許我們從任何基類訪問該方法。
示例
在下面的示例程式碼中,__private method 是一個私有方法。我們不能直接從類MyClass外部呼叫它,但可以在類內部呼叫它,例如在public_method中。
class MyClass: def __init__(self, value): self.value = value # Private method def __private_method(self): return self.value ** 2 # Public method def public_method(self): return self.__private_method() obj = MyClass(5) print(obj.public_method())
輸出
25
單個下劃線私有方法
如果私有方法字首為單個下劃線,則表示它按照約定應為“私有”,並且不鼓勵直接從類外部呼叫它。
示例
在下面的示例程式碼中,public_method 呼叫_private_method,這在類內部是允許的。
class MyClass: def _private_method(self): # Single underscore private method print("This is a private method") def public_method(self): self._private_method() obj = MyClass() obj.public_method() # obj._private_method()
輸出
This is a private method
雙下劃線私有方法
我們可以使用雙下劃線私有方法__private_method 使屬性或方法更難以從類外部訪問,以避免意外修改。
示例
名稱改編修改了方法的內部名稱使其唯一,例如,在下面的示例程式碼中,使用_MyClass__private_method 來訪問私有方法。
class MyClass: def __private_method(self): print("This is a truly private method") def public_method(self): self.__private_method() obj = MyClass() obj.public_method() # Using name mangling to access the private method obj._MyClass__private_method()
輸出
This is a truly private method This is a truly private method
私有方法與公共方法
私有方法和公共方法之間的一些關鍵區別如下所示。
特性 | 私有方法 | 公共方法 |
---|---|---|
定義 | 方法僅在類內可訪問。 | 方法可在任何地方(類內或類外)訪問。 |
命名約定 | 單個或雙下劃線(例如:def_method() 或 def__method())。 | 沒有前導下劃線(例如:def method())。 |
訪問 | 在類外部隱藏屬性/方法。 | 屬性/方法允許公開訪問。 |
目的 | 設計用於類內部使用,以隱藏實現細節。 | 設計供外部程式碼或子類使用。 |
廣告