如何利用Python定義和訪問(wèn)私有方法和私有屬性
使用雙下劃線定義私有方法和私有屬性在Python語(yǔ)言中,我們可以使用雙下劃線"__"來(lái)定義私有方法和私有屬性。這樣定義的方法和屬性在類(lèi)的外部是無(wú)法直接訪問(wèn)的,從而實(shí)現(xiàn)了封裝的特性。但需要注意的是,雖
使用雙下劃線定義私有方法和私有屬性
在Python語(yǔ)言中,我們可以使用雙下劃線"__"來(lái)定義私有方法和私有屬性。這樣定義的方法和屬性在類(lèi)的外部是無(wú)法直接訪問(wèn)的,從而實(shí)現(xiàn)了封裝的特性。但需要注意的是,雖然不能直接訪問(wèn)私有方法和私有屬性,但在內(nèi)部仍然可以通過(guò)類(lèi)內(nèi)部的公有方法進(jìn)行訪問(wèn)和操作。
實(shí)例演示私有方法和私有屬性的定義和調(diào)用
首先,在PyCharm工具中新建一個(gè)Python文件,定義一個(gè)名為ABC的類(lèi),并在初始化方法`__init__`中定義一個(gè)公有變量`a`和一個(gè)私有變量`b`,如下所示:
```python
class ABC:
def __init__(self):
self.a "Public variable"
self.__b "Private variable"
def searchName(self):
print("Searching name in public method.")
def __searchName(self):
print("Searching name in private method.")
```
接著,在類(lèi)ABC中,定義了一個(gè)名為`searchName`的公有方法,并在其中打印相關(guān)信息。然后在該方法下方,定義了一個(gè)名為`__searchName`的私有方法,并在其中也進(jìn)行了打印操作。
接下來(lái),初始化一個(gè)ABC類(lèi)的對(duì)象`abc`,并分別調(diào)用公有方法`searchName`和私有方法`__searchName`,代碼如下:
```python
abc ABC()
() 調(diào)用公有方法
abc.__searchName() 嘗試調(diào)用私有方法
```
運(yùn)行結(jié)果及錯(cuò)誤提示
當(dāng)保存并運(yùn)行這個(gè)Python文件時(shí),會(huì)發(fā)現(xiàn)嘗試調(diào)用私有方法`__searchName`時(shí)會(huì)出現(xiàn)報(bào)錯(cuò),因?yàn)樗接蟹椒o(wú)法在類(lèi)的外部直接訪問(wèn)。這是Python對(duì)私有方法的保護(hù)機(jī)制之一,避免了在外部誤操作或修改私有方法。
訪問(wèn)公有屬性和私有屬性
即使無(wú)法直接訪問(wèn)私有方法,但我們?nèi)匀豢梢酝ㄟ^(guò)對(duì)象的公有方法來(lái)訪問(wèn)和操作私有屬性。例如,可以使用如下方式再次初始化對(duì)象`abc`,并打印公有變量`a`和私有變量`b`:
```python
abc ABC()
print(abc.a) 訪問(wèn)公有屬性a
print(abc._ABC__b) 訪問(wèn)私有屬性b
```
通過(guò)以上操作,我們能夠成功訪問(wèn)到對(duì)象中的公有屬性和私有屬性,進(jìn)一步展示了私有方法和私有屬性的保護(hù)特性。
通過(guò)以上實(shí)例和說(shuō)明,我們深入理解了如何在Python中定義和訪問(wèn)私有方法和私有屬性,以及如何通過(guò)公有方法間接操作私有屬性,這對(duì)于編寫(xiě)安全、可靠的Python代碼具有重要意義。