淺談Python中的私有變量
私有變量表示方法
在變量前加上兩個(gè)下劃線的是私有變量。
class Teacher(): def __init__(self,name,level): self.__name=name self.__level=level #獲取老師的等級(jí) def get_level(self): return self.__level #獲取名字 def get_in_name(self): return self.__name
動(dòng)態(tài)方法無法讀取私有變量
即使是動(dòng)態(tài)方法也無法讀取私有變量,強(qiáng)行讀取會(huì)報(bào)錯(cuò)。
#定義動(dòng)態(tài)方法 def get_name(self): return self.__name #動(dòng)態(tài)方法賦值 Teacher.get_name=get_name t=Teacher("GG",5) print("level is: ",t.get_level()) #可行 print("name is",t.get_name()) #報(bào)錯(cuò),顯示沒有該屬性
動(dòng)態(tài)方法無法修改私有變量
動(dòng)態(tài)方法也無法修改私有變量,強(qiáng)行修改不會(huì)報(bào)錯(cuò),但是沒有效果。
t.set_name("NN") #實(shí)際沒有效果但是不報(bào)錯(cuò) print(t.get_in_name()) #類內(nèi)部獲取名字,輸出GG
強(qiáng)行讀取和修改私有變量
那么強(qiáng)行要讀取和改變私有變量怎么辦呢?
有一個(gè)不推薦但是可行的辦法:
私有屬性在對(duì)象內(nèi)部被名字是”類名_屬性名”。
在這個(gè)例子里,是這樣的:
print("name is",t._Teacher__name) #輸出GG t._Teacher__name="AA" #被改變了 print("name is",t._Teacher__name) #輸出AA
相關(guān)文章
python神經(jīng)網(wǎng)絡(luò)InceptionV3模型復(fù)現(xiàn)詳解
這篇文章主要為大家介紹了python神經(jīng)網(wǎng)絡(luò)InceptionV3模型復(fù)現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪<BR>2022-05-05Nginx+Uwsgi+Django 項(xiàng)目部署到服務(wù)器的思路詳解
這篇文章主要介紹了Nginx+Uwsgi+Django 項(xiàng)目部署到服務(wù)器的思路,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-05-05深度學(xué)習(xí)入門之Pytorch 數(shù)據(jù)增強(qiáng)的實(shí)現(xiàn)
這篇文章主要介紹了深度學(xué)習(xí)入門之Pytorch 數(shù)據(jù)增強(qiáng)的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-02-02一文教你學(xué)會(huì)使用Python中的多處理模塊
Python?多處理模塊是一個(gè)強(qiáng)大的工具,用于實(shí)現(xiàn)并行處理,提高程序的性能和效率,本文將詳細(xì)介紹?Python?中多處理模塊的使用方法,希望對(duì)大家有所幫助2024-01-01Python ArgumentParse的subparser用法說明
這篇文章主要介紹了Python ArgumentParse的subparser用法說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-04-04Python中最好用的命令行參數(shù)解析工具(argparse)
這篇文章主要介紹了Python中最好用的命令行參數(shù)解析工具(argparse),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08