Python 面向?qū)ο?:私有屬性和私有方法

一、 應(yīng)用場(chǎng)景及定義方式

  • 1.1、應(yīng)用場(chǎng)景

    • 在實(shí)際開(kāi)發(fā)中,對(duì)象某些屬性或方法 可能只希望 在對(duì)象的內(nèi)部被使用,而 不希望在外部被訪問(wèn)到
    • 私有屬性 就是 對(duì)象 不希望公開(kāi)的 屬性
    • 私有方法 就是 對(duì)象 不希望公開(kāi)的 方法
  • 1.2、定義方式

    • 定義屬性或方法時(shí),在 屬性名或者方法名前 增加 兩個(gè)下劃線,定義的就是 私有 屬性或方法,self.__age = 18就是私有屬性,而self.age = 18就不是私有屬性,同樣def __secret(self):是私有方法,def secret(self):不是私有方法

      class Women:
      
         def __init__(self, name):
      
              self.name = name
              # 不要問(wèn)女生的年齡
              self.__age = 18
      
         def __secret(self):
              print("我的年齡是 %d" % self.__age)
      
      xiaofang = Women("小芳")
      # 私有屬性,外部不能直接訪問(wèn)
      # print(xiaofang.__age)
      
      # 私有方法,外部不能直接調(diào)用
      # xiaofang.__secret()
      

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

在日常開(kāi)發(fā)中,不要使用這種方式,訪問(wèn)對(duì)象的 私有屬性 或 私有方法

  • Python 中,并沒(méi)有 真正意義 的 私有

    • 在給 屬性、方法 命名時(shí),實(shí)際是對(duì) 名稱 做了一些特殊處理,使得外界無(wú)法訪問(wèn)到

    • 處理方式:在 調(diào)用的屬性名或者方法名稱 前面加上 _類名 => _類名__名稱

      class Women:
      
          def __init__(self, name):
      
             self.name = name
             # 不要問(wèn)女生的年齡
             self.__age = 18
      
          def __secret(self):
              print("我的年齡是 %d" % self.__age)
      
       xiaofang = Women("小芳")
       # 私有屬性,外部不能直接訪問(wèn)(加上`_Women`就可以了)
       # print(xiaofang._ Women__age)
      
       # 私有方法,外部不能直接調(diào)用(加上`_Women`就可以了)
       # xiaofang._Women__secret()
      

      提示
      print(xiaofang.__age) => print(xiaofang._ Women__age)
      xiaofang.__secret() => xiaofang._Women__secret()

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

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

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