P 面向?qū)ο?| 偽私有屬性與私有方法(科普)



一、私有屬性與私有方法

Python中,是沒有真正意義上的私有的

  • 私有屬性與私有方法是對象的隱私,通常用于做一些內(nèi)部的事情,外界與子類都不能直接訪問
名稱 描述
私有屬性 對象不希望公開的屬性
私有方法 對象不希望公開的方法
  • 定義方式
    定義屬性名或方法名時,在屬性名或方法名的前面加兩個下劃線,這樣定義的就是私有屬性或私有方法

提示:

  • 子類對象不能再自己的方法內(nèi)部,直接訪問父類的私有屬性或私有方法,但是可以通過父類的公有方法進(jìn)行間接訪問

eg:

class Women:
    def __init__(self, name):
        self.name = name
        self.__age = 18
        self.age = 18

    def __secret(self):
        # 在對象的方法內(nèi)部是可以訪問對象的私有屬性的
        print("%s的年齡是%d" % (self.name, self.__age))

    def secret(self):
        # 在對象的方法內(nèi)部是可以訪問對象的私有屬性的
        print("%s的年齡是%d" % (self.name, self.__age))


if __name__ == '__main__':
    xiaomei = Women('小美')
    print(xiaomei.age)
    xiaomei.secret()
    # # 私有屬性不能直接被外界訪問
    # print(xiaomei.__age)
    # # 私有方法不能直接被外界調(diào)用
    # xiaomei.__secret()


二、偽私有屬性與偽私有方法

Python中,是沒有真正意義上的私有的,只是在給屬性、方法命名時,對名稱做了一些特殊處理,使外界無法訪問到

  • 處理方式:
    _類名__名稱
class Women:
    def __init__(self, name):
        self.name = name
        self.__age = 18
        self.age = 18

    def __secret(self):
        # 在對象的方法內(nèi)部是可以訪問對象的私有屬性的
        print("%s的年齡是%d" % (self.name, self.__age))

    def secret(self):
        # 在對象的方法內(nèi)部是可以訪問對象的私有屬性的
        print("%s的年齡是%d" % (self.name, self.__age))


if __name__ == '__main__':
    xiaomei = Women('小美')
    print(xiaomei.age)
    xiaomei.secret()
    # 私有屬性不能直接被外界訪問
    print(xiaomei._Women__age)
    # 私有方法不能直接被外界調(diào)用
    xiaomei._Women__secret()


更新中......


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容