亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

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

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

雖然這樣是沒(méi)法直接修改x了,但還是可以通過(guò)_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

萬(wàn)一哪天手抖了呢...

但如果使用雙下劃線——

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會(huì)將以雙下劃線開(kāi)頭的實(shí)例屬性名前加上一個(gè)下劃線和類名存入實(shí)例的__dict__屬性中。

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

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

p.s.類也有__dict__屬性。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python簡(jiǎn)單生成隨機(jī)數(shù)的方法示例

    Python簡(jiǎn)單生成隨機(jī)數(shù)的方法示例

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

    matplotlib基礎(chǔ)繪圖命令之bar的使用方法

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

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

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

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

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

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

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

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

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

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

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

    django Serializer序列化使用方法詳解

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

    NumPy?與?Python?內(nèi)置列表計(jì)算標(biāo)準(zhǔn)差區(qū)別詳析

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

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

    作為一個(gè).NET程序員,真心不喜歡以及PHP這種松散的語(yǔ)法。有人說(shuō),程序員應(yīng)該多學(xué)幾門語(yǔ)言,本想學(xué)習(xí)Java,無(wú)奈感覺(jué)Java的語(yǔ)法太啰嗦了。很多人都推薦Python,說(shuō)它的語(yǔ)法簡(jiǎn)潔,執(zhí)行效率高。趁這兩天空閑,開(kāi)始學(xué)習(xí)Python。
    2014-07-07

最新評(píng)論