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

python防止隨意修改類屬性的實現(xiàn)方法

 更新時間:2019年08月21日 08:23:14   投稿:zx  
這篇文章主要介紹了python防止隨意修改類屬性的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

如果不想允許隨意修改一個類的某個屬性,常用的方法是使用property裝飾器以及在屬性前加下劃線。

class V:
  def __init__(self, x): 
    self._x = x
  
  @property
  def x(self):
    return self._x 

雖然這樣是沒法直接修改x了,但還是可以通過_x很輕易地修改x。

>>>v = V(5)
>>>v.x
5
>>>v._x
5
>>>v.x = 4
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
AttributeError: cant set attribute
>>>v._x = 4
>>>v.x
4

萬一哪天手抖了呢...

但如果使用雙下劃線——

class V:
  def __init__(self,x):
    self.__x = x

  @property
  def x(self):
    return self.__x

>>>v = V(5)
>>>v.__x = 4
>>>v.__x
4
>>>v.x
5

原因在于python的名稱改寫特性(name mangling)。python會將以雙下劃線開頭的實例屬性名前加上一個下劃線和類名存入實例的__dict__屬性中。

>>>v = V(5)
>>>v.__dict__
{'_V__x': 5}
>>>v.__x = 4
>>>v.__dict__
{'_V__x': 5, '__x': 4}

當然,修改v.x的值還是可以做到的的,只需通過修改v._V__x就可以了,不過誤操作的可能性已經(jīng)降低很多了。

p.s.類也有__dict__屬性。

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python簡單生成隨機數(shù)的方法示例

    Python簡單生成隨機數(shù)的方法示例

    這篇文章主要介紹了Python簡單生成隨機數(shù)的方法,結(jié)合實例形式分析了Python基于random模塊生成隨機數(shù)的相關(guān)操作技巧,需要的朋友可以參考下
    2018-03-03
  • matplotlib基礎繪圖命令之bar的使用方法

    matplotlib基礎繪圖命令之bar的使用方法

    這篇文章主要介紹了matplotlib基礎繪圖命令之bar的使用方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-08-08
  • python給視頻添加背景音樂并改變音量的具體方法

    python給視頻添加背景音樂并改變音量的具體方法

    在本篇文章里小編給大家整理的是關(guān)于python給視頻添加背景音樂并改變音量的具體方法,需要的朋友們可以參考下。
    2020-07-07
  • Django框架創(chuàng)建mysql連接與使用示例

    Django框架創(chuàng)建mysql連接與使用示例

    這篇文章主要介紹了Django框架創(chuàng)建mysql連接與使用,簡單介紹了Linux環(huán)境下mysql的安裝,并結(jié)合實例形式分析了Django框架基于第三方庫pymysql連接mysql數(shù)據(jù)庫相關(guān)操作技巧,需要的朋友可以參考下
    2019-07-07
  • python打包生成so文件的實現(xiàn)

    python打包生成so文件的實現(xiàn)

    這篇文章主要介紹了python打包生成so文件的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-10-10
  • 使用Django和Python創(chuàng)建Json response的方法

    使用Django和Python創(chuàng)建Json response的方法

    下面小編就為大家分享一篇使用Django和Python創(chuàng)建Json response的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-03-03
  • Python 使用 environs 庫定義環(huán)境變量的方法

    Python 使用 environs 庫定義環(huán)境變量的方法

    這篇文章主要介紹了Python 使用 environs 庫來更好地定義環(huán)境變量,本節(jié)我們以 Python 項目為例,說說環(huán)境變量的設置。通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-02-02
  • django Serializer序列化使用方法詳解

    django Serializer序列化使用方法詳解

    這篇文章主要介紹了django Serializer序列化使用方法詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-10-10
  • NumPy?與?Python?內(nèi)置列表計算標準差區(qū)別詳析

    NumPy?與?Python?內(nèi)置列表計算標準差區(qū)別詳析

    這篇文章主要介紹了NumPy與Python內(nèi)置列表計算標準差區(qū)別詳析,NumPy,是Numerical?Python的簡稱,用于高性能科學計算和數(shù)據(jù)分析的基礎包,更多相關(guān)內(nèi)容需要的朋友可以參考一下
    2022-07-07
  • 在Windows8上的搭建Python和Django環(huán)境

    在Windows8上的搭建Python和Django環(huán)境

    作為一個.NET程序員,真心不喜歡以及PHP這種松散的語法。有人說,程序員應該多學幾門語言,本想學習Java,無奈感覺Java的語法太啰嗦了。很多人都推薦Python,說它的語法簡潔,執(zhí)行效率高。趁這兩天空閑,開始學習Python。
    2014-07-07

最新評論