在Python中,我們可以使用雙下劃線(__
)前綴來實現對類實例方法和屬性的訪問控制。這種方式被稱為“名稱修飾”(name mangling),它會在內部將屬性或方法名更改為_classname__attributename
,從而使其在類外部變得不易訪問。
以下是一個示例:
class MyClass:
def __init__(self):
self.__private_attribute = "This is a private attribute."
def __private_method(self):
print("This is a private method.")
def public_method(self):
# 在類內部訪問私有屬性和方法
print(self.__private_attribute)
self.__private_method()
obj = MyClass()
obj.public_method() # 輸出:This is a private attribute. 和 This is a private method.
# 試圖在類外部訪問私有屬性和方法
print(obj.__private_attribute) # 拋出 AttributeError 異常
obj.__private_method() # 拋出 AttributeError 異常
需要注意的是,雖然這種方式可以起到一定的訪問控制作用,但并非真正的私有性。在Python中,仍然可以通過以下方式訪問這些屬性和方法:
print(obj._MyClass__private_attribute) # 輸出:This is a private attribute.
obj._MyClass__private_method() # 輸出:This is a private method.
因此,這種方式僅適用于防止意外訪問和提高代碼的可讀性,而不能保證真正的私有性。