1. 程式人生 > >Python 面向對象 --- 私有屬性和私有方法

Python 面向對象 --- 私有屬性和私有方法

處理 %d com 私有 訪問 class 無法 self. inf

01,應用場景及定義方式

應用場景

  • 在實際開發中,對象某些屬性或方法 可能只希望 在對象的內部被使用,而 不希望被外部訪問到
  • 私有屬性 就是 對象 不希望公開的 屬性
  • 私有方法 就是 對象 不希望公開的 方法

定義方式

  • 定義屬性或方法時,在 屬性名或者方法名前 增加連個下劃線,定義的就是 私有 屬性或方法

技術分享圖片


    class Women:
        def __init__(self, name):
            self.name = name
            self.__age = 18
    
        # def __secret(self):
        def secret(self):
            # 在對象的方法內部,是可以訪問對象的私有屬性的
            print("%s 的年齡是 %d" % (self.name, self.__age))
    
    
    namei = Women("娜美")
    # 私有屬性和私有方法,在外界不能直接別訪問
    # namei.__age()
    # namei.__secret()
    namei.secret()
    
    #  結果呈現
    娜美 的年齡是 18

02,偽私有屬性和私有方法

提示:在日常開發中,不要使用這種方法,訪問對象的 私有屬性 或 私有方法

python 中,並沒有 真正意義私有

  • 在給 屬性、方法 命名時,實際是對 名稱 做了一些特殊處理,使得外界無法訪問到
  • 處理方式: 在 名稱 面前加上 __類名 => __類名__名稱

    class Women():
        def __init__(self, name):
            self.name = name
            self.__age = 18
    
        def __secret(self):
        # def secret(self):
            # 在對象的方法內部,是可以訪問對象的私有屬性的
            print("%s 的年齡是 %d" % (self.name, self.__age))
    
    
    namei = Women("娜美")
    # 私有屬性和私有方法,在外界不能直接別訪問
    # namei.__age()
    namei._Women__secret()
    # namei.secret()
    
    # 結果呈現
    娜美 的年齡是 18

Python 面向對象 --- 私有屬性和私有方法