欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python中私有屬性的定義方式

 更新時間:2020年03月05日 09:07:46   作者:Daniel2333  
這篇文章主要介紹了Python中私有屬性的定義方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

Python沒有類似于Java的private關(guān)鍵字, 但也可以為類定義私有屬性. 只需將屬性命名變?yōu)橐訽_開頭, 例如 __field.

示例代碼:

class Vector2D(object):
  def __init__(self, x, y):
    self.__x = float(x)
    self.__y = float(y)
    self.xx = x
    self.yy = y 
  def get_x(self):
    return self.__x # 內(nèi)部訪問
if __name__ == "__main__":
  v = Vector2D(3, 4)
  print v.__dict__
  print v._Vector2D__x, v.get_x()# 但是可以通過v._Vector2D__x 在外部訪問
  v.__x # 外部訪問

輸出:

{'yy': 4, 'xx': 3, '_Vector2D__x': 3.0, '_Vector2D__y': 4.0}
3.0 3.0
Traceback (most recent call last):
...
v.__x
AttributeError: 'Vector2D' object has no attribute '__x'

從上面的例子可以看出:

1. __field被編譯器重命名為_className__field

2. 在class外部不能訪問obj.__field, 但在class內(nèi)部可以

3. 但是, 這只能防止無意間的調(diào)用, 不能防止惡意調(diào)用, 用Fluent Python的話來講, 這是一種safety device, not security device, 用國語來講, 就是防君子不防xx, 因為可以通過obj._className__field在外部訪問obj的私有__field.

補(bǔ)充知識:python中私有屬性和私有方法,修改私有屬性的值

如果一個屬性是以兩個下劃線開始 就標(biāo)識這個這個屬性是一個私有屬性

self.__money = 1000000

如果一個方法是以兩個下劃線開始 也代表已經(jīng)私有

子類繼承了父類 如果父類的屬性私有 將不會被子類繼承

私有屬性和私有方法可以在類的里面使用

自定義類中 如果一個屬性進(jìn)行了私有 在類的外面不能調(diào)用

修改私有屬性的值

如果需要修改一個對象的屬性值,通常有2種方法

對象名.屬性名 = 數(shù)據(jù) ----> 直接修改

對象名.方法名() ----> 間接修改

私有屬性不能直接訪問,所以無法通過第一種方式修改,一般的通過第二種方式修改私有屬性的值:定義一個可以調(diào)用的公有方法,在這個公有方法內(nèi)訪問修改。

class Person(object):
 
  def __init__(self):
    self.name = "小明"
    self.__age = 20
 
  #獲取私有屬性的值
  def get_age(self):
    return self.__age
 
  #設(shè)置私有屬性的值
  def set_age(self, new_age):
    self.__age = new_age
 
 
#定義一個對象
p = Person()
#強(qiáng)行獲取私有屬性
#崇尚一切靠自覺
print(p._Person__age)
print(p.name)
#想在類的外面獲取對象的屬性
ret = p.get_age()
print(ret)
 
#想在類的外面修改對象私有屬性的值
p.set_age(30)
print(p.get_age())

以上這篇Python中私有屬性的定義方式就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python操作MongoDb數(shù)據(jù)庫流程詳解

    Python操作MongoDb數(shù)據(jù)庫流程詳解

    這篇文章主要介紹了Python操作MongoDb數(shù)據(jù)庫流程詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-03-03
  • Python連接HDFS實現(xiàn)文件上傳下載及Pandas轉(zhuǎn)換文本文件到CSV操作

    Python連接HDFS實現(xiàn)文件上傳下載及Pandas轉(zhuǎn)換文本文件到CSV操作

    這篇文章主要介紹了Python連接HDFS實現(xiàn)文件上傳下載及Pandas轉(zhuǎn)換文本文件到CSV操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • 源碼解讀Python中Event事件的使用

    源碼解讀Python中Event事件的使用

    事件(Event)主要負(fù)責(zé)多任務(wù)之間的同步,這篇文章主要來和大家詳細(xì)介紹一下它的原理以及簡單使用,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解下
    2023-12-12
  • PyQt5 實現(xiàn)字體大小自適應(yīng)分辨率的方法

    PyQt5 實現(xiàn)字體大小自適應(yīng)分辨率的方法

    今天小編就為大家分享一篇PyQt5 實現(xiàn)字體大小自適應(yīng)分辨率的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-06-06
  • python 定時器,實現(xiàn)每天凌晨3點執(zhí)行的方法

    python 定時器,實現(xiàn)每天凌晨3點執(zhí)行的方法

    今天小編就為大家分享一篇python 定時器,實現(xiàn)每天凌晨3點執(zhí)行的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-02-02
  • Linux下python3.7.0安裝教程

    Linux下python3.7.0安裝教程

    這篇文章主要為大家詳細(xì)介紹了Linux下python3.7.0安裝教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-07-07
  • 使用python和pygame制作擋板彈球游戲

    使用python和pygame制作擋板彈球游戲

    這篇文章主要介紹了使用python和pygame制作擋板彈球游戲,本文通過實例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-12-12
  • python 寫一個水果忍者游戲

    python 寫一個水果忍者游戲

    這篇文章主要介紹了python 如何寫一個水果忍者游戲,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2021-01-01
  • python爬蟲可以爬什么

    python爬蟲可以爬什么

    在本篇文章里小編給大家整理的是關(guān)于python爬蟲的作用地方以及相關(guān)知識點,需要的朋友們可以學(xué)習(xí)下。
    2020-06-06
  • 最基礎(chǔ)的Python的socket編程入門教程

    最基礎(chǔ)的Python的socket編程入門教程

    這篇文章主要介紹了最基礎(chǔ)的Python的socket編程入門教程,包括最基本的發(fā)送和接受信息等內(nèi)容,需要的朋友可以參考下
    2015-04-04

最新評論