80.Python類的私有屬性和私有方法( 實現封裝 )

私有屬性和私有方法 ( 實現封裝 )

Python對於類的成員沒有嚴格的訪問控制限制, 這與其他面嚮對象語言有區別; 關於私有屬性和私有方法, 有如下要點:

=> 通常我們約定, 兩個下劃線開頭的屬性或方法是私有的(private); 其他爲公共的(public);

=> 類內部可以訪問私有屬性(方法);

=> 類外部不能直接訪問私有屬性(方法);

=> 類外部可以通過 “_類名__私有屬性(方法)名”訪問私有屬性(方法);

注: 方法本質上也是屬性, 只不過是可以通過()執行而已; 所以, 此處說的私有屬性和共有屬性, 也同時講解了私有方法和共有方法的用法; 如下測試中, 同時也包含了私有方法和公有方法的例子;

 

#測試私有屬性,對外是私有的,對內隨便用
class Employee:
    __company = "百戰成神"
    def __init__(self,name,age):
        self.name = name
        self.__age = age #兩個下劃線,定義成私有屬性 '_Employee__age'
    def __work(self): #私有方法
        print("好好上班")
        print("年齡:{0}".format(self.__age)) #自己調本類私有屬性隨便調
        print(Employee.__company) #內部調用私有類屬性

e = Employee("張三",18)
print(e.name)
print(e._Employee__age) # 類外部可以通過 “_類名__私有屬性(方法)名”訪問私有屬性(方法);
# print(dir(e))
e._Employee__work() #調類的私有方法
print(Employee._Employee__company) #外部調用私有類屬性

輸出:

D:\wwwroot\pyiteam\venv\Scripts\python.exe D:/wwwroot/pyiteam/mypro_obj/mypy02.py
張三
18
好好上班
年齡:18
百戰成神
百戰成神

Process finished with exit code 0

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章