訪問類中私有屬性的方式(兩種)
阿新 • • 發佈:2019-01-31
1.首先要理解私有屬性:
私有屬性主要是指 Python中單下劃線和雙下劃線的區別 (比較直白的意思是:)
_x: 單前置下劃線,私有化屬性或方法,from somemoudle import *禁止匯入,類物件和子類可以訪問
__xx:雙前置下劃線,避免與子類中的屬性命名衝突,無法在外部直接訪問(名字重整所以訪問不到)
接下來用程式碼解釋:
2.
class People(object): def __init__(self): self.name = 'zhangsan' self._age = '20' self.__address = '鄭州' if __name__ == '__main__': p = People() print(p.name) print(p._age) print(p.__address)
其實在這裡p._age下面有波浪線,p.__address顏色是那種似乎報錯的顏色!執行結果:
顯然__address這個地方報錯了,說明不能使用。
這裡的英文翻譯是:對受保護成員的訪問,此檢查警告是否在類外部訪問受保護成員,其定義的類或模組的繼承者。
雖然能執行,但是系統還是警告了!所以以後_x的不要隨意引用。而且
這個_age有提示,但是__address沒有提示。
3.下面是解決方案:第一種(可以強制使用,但是不建議)
4.第二種
class People(object): def __init__(self): self.name = 'zhangsan' self._age = '20' self.__address = '鄭州' def get__address(self): return self.__address if __name__ == '__main__': p = People() print(p.name) print(p.get__address())
5.(純屬個人看法)