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

python中關(guān)于property的最詳細使用方法

 更新時間:2021年04月06日 09:21:32   作者:lecboyECNU  
這篇文章主要介紹了python中關(guān)于property的最詳細使用方法,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下

為什么要寫這篇文章

其實是因為最近學(xué)到了python的property裝飾器的相關(guān)知識,剛開始學(xué)得云里霧里,于是乎,看了許多相關(guān)博客,不巧,大概是自己基礎(chǔ)不太好吧,真心感覺許多人寫的太過深奧,而且不是很全面。于是本人花了整整一下午實驗,現(xiàn)在將關(guān)于property的相關(guān)知識分享出來。如有錯誤之處,還望各位不吝賜教!

什么是property裝飾器

顧名思義,這是一個裝飾器,起到一個輔助作用,具體理解請看下面一個例子。我們知道,程序中有許多變量都有范圍的限制,比如年齡,工資,身高等不可能為負數(shù)。但是用戶輸入時,有時會不可避免地輸入非法的值,如果我們的程序沒有一個判斷,那么極有可能導(dǎo)致整個程序崩潰!因此,我們常常會寫一些set(),get()等函數(shù)來判斷,但常常會過于麻煩,這時,便出現(xiàn)了property裝飾器,它既有判斷的功能,而且非常簡潔。

set()和get()的使用

class A:
  def set_age(self, age):
    if 0 < age < 120:
      self.age = age
    else:
      print("非法的年齡!默認為18")
      self.age = 0
  def get_age(self):
    return self.age
a = A()
a.set_age(19)
print(a.age)
a.set_age(180)
print(a.age)

結(jié)果如下:

19
非法的年齡!默認為18
0

不可否認,這樣確實達到了我們想要的效果,事實上,Java語言就是這樣實現(xiàn)的。但是python具有更簡潔的表達,就是property裝飾器。

property裝飾器的使用

class A:
  @property
  def age(self):
    return self._age
  @age.setter
  def age(self, age):
    if 0 < age < 120:
      self._age = age
    else:
      self._age = 18
      print("非法的年齡!默認為18")
a = A()
a.age = 19
print(a.age)
a.age = 180
print(a.age)

這里的@property相當于get()方法,@age.setter相當于set()方法。

好處

1.property裝飾器將set()和get()方法變成了屬性!可以用 .age 來設(shè)置值,不需要用括號,方便更改。
2.增加了新的功能------只讀,如果你只寫@property而不寫@age.setter,那么這個變量就是只讀的,重新賦值則會報錯。增加了程序的安全性。
3.注意到property修飾的是私有成員,而私有成員本來相對來說更安全一點,這體現(xiàn)了代碼的一致性。

注意事項

1.如果你要使修飾的成員只讀,則必須在定義時就設(shè)置好值,否則會報錯。
2.property裝飾器只能修飾私有成員,如果修飾非私有成員,則會報循環(huán)的錯誤。結(jié)果確實是這樣,但原因不太清楚,煩請大佬們不吝賜教!
3.setter前的變量必須是property修飾的變量,如本例中是age,二者必須一致。

到此這篇關(guān)于python中關(guān)于property的最詳細使用方法的文章就介紹到這了,更多相關(guān)python property使用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 如何搜索查找并解決Django相關(guān)的問題

    如何搜索查找并解決Django相關(guān)的問題

    每個程序員都會在開發(fā)過程中遇到這樣或那樣的問題, 有時光靠一個人是無法解決所有問題的, 所以我們應(yīng)該找到適當?shù)牡胤教釂?
    2014-06-06
  • python自定義異常類方式

    python自定義異常類方式

    這篇文章主要介紹了python自定義異常類方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • 安裝完P(guān)ython包然后找不到模塊的解決步驟

    安裝完P(guān)ython包然后找不到模塊的解決步驟

    今天小編就為大家分享一篇安裝完P(guān)ython包然后找不到模塊的解決步驟,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • scrapy-redis源碼分析之發(fā)送POST請求詳解

    scrapy-redis源碼分析之發(fā)送POST請求詳解

    這篇文章主要給大家介紹了關(guān)于scrapy-redis源碼分析之發(fā)送POST請求的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家學(xué)習(xí)或者使用scrapy-redis具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • Python編程快速上手——PDF文件操作案例分析

    Python編程快速上手——PDF文件操作案例分析

    這篇文章主要介紹了Python 文件操作,結(jié)合具體實例形式分析了Python針對pdf文件的遍歷、讀寫、加密、解密等相關(guān)操作技巧與注意事項,需要的朋友可以參考下
    2020-02-02
  • python自動化測試實例解析

    python自動化測試實例解析

    這篇文章主要介紹了python自動化測試實例,并對實例中的注意點進行了簡單的分析,需要的朋友可以參考下
    2014-09-09
  • 詳解Python中魔法方法的使用

    詳解Python中魔法方法的使用

    Python的魔法方法,也稱為dunder(雙下劃線)方法,是可以讓你對類添加“魔法”的特殊方法。本文主要來和大家聊聊魔法方法的使用,需要的可以參考一下
    2022-12-12
  • python流程圖和思維導(dǎo)圖實例代碼

    python流程圖和思維導(dǎo)圖實例代碼

    這篇文章主要給大家介紹了關(guān)于python流程圖和思維導(dǎo)圖的相關(guān)資料,學(xué)習(xí)python過程中,畫流程圖可以有效的幫助你梳理程序的邏輯,本文通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2021-08-08
  • django與小程序?qū)崿F(xiàn)登錄驗證功能的示例代碼

    django與小程序?qū)崿F(xiàn)登錄驗證功能的示例代碼

    這篇文章主要介紹了django與小程序?qū)崿F(xiàn)登錄驗證功能的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-02-02
  • 深入淺析Pytorch中stack()方法

    深入淺析Pytorch中stack()方法

    這篇文章主要介紹了Pytorch中stack()方法的總結(jié)及理解,本文通過實例圖文相結(jié)合給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-11-11

最新評論