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

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 來修改,我們可以選擇將屬性聲名為私有的,這樣從外部時無法訪問該屬性的,也就不能修改了,但是依然可以修改屬性字典的方法來修改。

# 當(dāng)然 可以使用 @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

最新評論

海城市| 奉化市| 扬中市| 湖口县| 衡山县| 吉首市| 内黄县| 长阳| 清水河县| 海淀区| 双牌县| 宜良县| 锡林郭勒盟| 腾冲县| 太原市| 砀山县| 汝城县| 东宁县| 德清县| 雷山县| 龙胜| 正定县| 沽源县| 山东| 临汾市| 焉耆| 阳高县| 米林县| 合江县| 夹江县| 隆回县| 松阳县| 曲松县| 安丘市| 天津市| 大荔县| 彭州市| 宝坻区| 武汉市| 定边县| 栾川县|