Python 是一門動態語言,沒有像 Java 一樣的嚴格的訪問控制機制,這導致 Python 中的屬性是默認開放的,而沒有像其他語言中的私有屬性那樣提供訪問的保護機制。然而,Python 也提供了一定程度的強私有屬性來保護屬性的訪問。
在 Python 中,我們可以通過在屬性名前雙下劃線來定義一個強私有屬性,即“__name”的形式。
class MyClass: def __init__(self): self.__name = 'John' mc = MyClass() print(mc.__name)
運行上述代碼,會報出如下的錯誤:
AttributeError: 'MyClass' object has no attribute '__name'
這是因為 Python 對強私有屬性進行了一定的名稱重整,將屬性名改為“_類名__屬性名”的形式進行訪問,此時再進行訪問會出現異常。因此,我們可以修改代碼:
class MyClass: def __init__(self): self.__name = 'John' mc = MyClass() print(mc._MyClass__name)
這樣我們就可以訪問到強私有屬性“__name”了。
需要注意的是,強私有屬性仍然可以通過“_MyClass__name”的形式訪問,因此并不能真正地保證屬性的隱私性,而只是一種類似于命名空間的機制。
總之,Python 中的強私有屬性可以幫助我們在一定程度上保護屬性的訪問,但并不能完全保證屬性的隱私性,需要在實際使用中進行注意。
上一篇python 領優惠券