最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

      <rp id="2ka00"><dfn id="2ka00"></dfn></rp>

          Python 私有屬性和私有方法應(yīng)用場景分析

           更新時間:2020年06月19日 08:47:54   作者:BlackMonkey  
          這篇文章主要介紹了Python 私有屬性和私有方法應(yīng)用場景分析,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下

          類的私有屬性和方法

          Python是個開放的語言,默認情況下所有的屬性和方法都是公開的 或者叫公有方法,不像C++和 Java中有明確的public,private 關(guān)鍵字來區(qū)分私有公有。

          Python默認的成員函數(shù)和成員變量都是公開的,類的私有屬性指只有在類的內(nèi)部使用的屬性或方法,表現(xiàn)形式為以“__“ 屬性名或方法名以雙下劃線開頭。

          class Test(object):
            __count = 0  # 私有屬性 __count
          
            def get_count(self):
              return self.__count  # 類的內(nèi)部可以使用私有屬性
          
            def set_count(self, value):
              if self.__check_value(value):  # 在類的內(nèi)部調(diào)用類的私有方法
                self.__class__.__count = value
          
            def __check_value(self, value):  # 定義類的私有方法 檢查參數(shù)
              if isinstance(value, int):
                return True
          
          a = Test()
          print(a.get_count())
          a.set_count(100)
          print(a.get_count())
          #a.__check_value(10)  # 調(diào)用私有方法會報錯
          #print(a.__count)			# 直接訪問私有屬性也會報錯

          應(yīng)用場景

          對于一些敏感的數(shù)據(jù),我們不希望直接被的函數(shù)調(diào)用,或者不希望草率的直接 object.key = value 來修改,我們可以選擇將屬性聲名為私有的,這樣從外部時無法訪問該屬性的,也就不能修改了,但是依然可以修改屬性字典的方法來修改。

          # 當然 可以使用 @proprety 
          class Person(object):
            __name = 'Monkey'
          
            def update_name(self, name):
              self.__name = name
          
            def get_name(self):
              return self.__name
          
          p = Person()
          p.update_name('BlackMonkey')
          print(p.get_name())  # BlackMonkey
          print(p.__name)  # 報錯 AttributeError: 'Person' object has no attribute '__name'

          下面在看下python中私有屬性和受保護的屬性的實例代碼

          具體代碼如下所示:

          class People:
           
            def __init__(self, name, age):
              self.name = name
              self.age = age
              self._protect_var = 10       # 受保護的成員,使用一個下劃線_,它僅僅是提示成員受保護,但可以被更改
              self.__private_var = 10       # 使用雙下劃線__可以定義私有屬性
           
            def sayhi(self):
              print("Hi, my name is {}, and I'm {}".format(self.name, self.age))
           
            def get_var(self):
              print(self.__private_var)
           
            def set_var(self, var):
              self.__private_var = var
           
           
          # class instance 類的實例化
           
          someone = People(name='Jack', age=20)    # 類的實例化
          print(someone._protect_var)         # 10 受保護的成員可以被打印
          someone._protect_var = 20          # 受保護的成員可以被修改
          print(someone._protect_var)         # 20 可以被修改
           
          # print(someone.__private_var)          # 報錯 AttributeError: 'People' object has no attribute '__private_var'
          someone.__private_var = 30          # 此處可以被修改,不會報錯(此處表示私有屬性可以被修改,具體原因可以百度)
          print(someone.__private_var)         # 可以打印,不會報錯
           
          someone.get_var()              # 10 此處可以發(fā)現(xiàn),__private_var在上面被改成30,但此處打印出來卻是10(具體原因可以百度)
          someone.set_var(40)
          someone.get_var()              # 40 這里通過someone.set_var(40)改成了40
           
          print(dir(someone))             # dir()打印出someone這個對象支持的屬性和方法
          # ['_People__private_var', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__private_var', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_protect_var', 'age', 'get_var', 'name', 'sayhi', 'set_var']
          # 在類的內(nèi)部重命名了 __private_var重命名成_People__private_var
           
          someone._People__private_var = 100
          someone.get_var()              # 100 通過_People__private_var把__private_var的值改成了100

          總結(jié)

          到此這篇關(guān)于Python 私有屬性和私有方法應(yīng)用場景分析的文章就介紹到這了,更多相關(guān)python 私有屬性和私有方法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

          相關(guān)文章

          • django序列化serializers過程解析

            django序列化serializers過程解析

            這篇文章主要介紹了django序列化serializers過程解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
            2019-12-12
          • python中?conda?虛擬環(huán)境管理和jupyter內(nèi)核管理

            python中?conda?虛擬環(huán)境管理和jupyter內(nèi)核管理

            這篇文章主要介紹了python中?conda?虛擬環(huán)境管理和jupyter內(nèi)核管理,文章基于pyhton以及conda的虛擬環(huán)境創(chuàng)建、刪除、jupyter添加、刪除虛擬kernel的方法,需要的朋友可以參考一下
            2022-04-04
          • Saltstack快速入門簡單匯總

            Saltstack快速入門簡單匯總

            saltstack是使用python編寫的開源自動化部署與管理工具,擁有良好的擴展性以及優(yōu)秀的執(zhí)行效率,配置簡單,可以工作在多平臺上,經(jīng)常被描述為 Func加強版+Puppet精簡版
            2016-03-03
          • python 運用Django 開發(fā)后臺接口的實例

            python 運用Django 開發(fā)后臺接口的實例

            今天小編就為大家分享一篇python 運用Django 開發(fā)后臺接口的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
            2018-12-12
          • python操作redis數(shù)據(jù)庫的三種方法

            python操作redis數(shù)據(jù)庫的三種方法

            這篇文章主要介紹了python操作redis數(shù)據(jù)庫的三種方法,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
            2020-09-09
          • django學(xué)習(xí)之a(chǎn)jax post傳參的2種格式實例

            django學(xué)習(xí)之a(chǎn)jax post傳參的2種格式實例

            AJAX除了異步的特點外,還有一個就是:瀏覽器頁面局部刷新,下面這篇文章主要給大家介紹了關(guān)于django學(xué)習(xí)之a(chǎn)jax post傳參的2種格式的相關(guān)資料,需要的朋友可以參考下
            2021-05-05
          • keras做CNN的訓(xùn)練誤差loss的下降操作

            keras做CNN的訓(xùn)練誤差loss的下降操作

            這篇文章主要介紹了keras做CNN的訓(xùn)練誤差loss的下降操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
            2020-06-06
          • Python subprocess庫的使用詳解

            Python subprocess庫的使用詳解

            這篇文章主要介紹了Python subprocess庫的使用詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
            2018-10-10
          • 解決Django Haystack全文檢索為空的問題

            解決Django Haystack全文檢索為空的問題

            這篇文章主要介紹了解決Django Haystack全文檢索為空的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
            2020-05-05
          • Python生成直方圖方法實現(xiàn)詳解

            Python生成直方圖方法實現(xiàn)詳解

            這篇文章主要介紹了python OpenCV圖像直方圖處理,文章通過matplotlib畫一個直方圖展開詳情,具有一定的參考價值,需要的小伙伴可以參考一下
            2022-11-11

          最新評論

          承德县| 革吉县| 亚东县| 黑龙江省| 兴业县| 商洛市| 玉溪市| 乃东县| 太和县| 龙井市| 册亨县| 莒南县| 石泉县| 安陆市| 临清市| 松滋市| 惠来县| 贵德县| 金山区| 和硕县| 冀州市| 汝城县| 镇康县| 锡林郭勒盟| 台州市| 武夷山市| 乌恰县| 鄂托克旗| 虹口区| 双流县| 屏山县| 东乌| 油尖旺区| 和平县| 阿克苏市| 和平县| 霞浦县| 合肥市| 布尔津县| 那坡县| 开江县|