濮阳杆衣贸易有限公司

主頁 > 知識庫 > python中關(guān)于property的最詳細(xì)使用方法

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

熱門標(biāo)簽:工廠智能電話機(jī)器人 原裝電話機(jī)器人 西藏智能外呼系統(tǒng)五星服務(wù) 江蘇客服外呼系統(tǒng)廠家 千陽自動外呼系統(tǒng) 清遠(yuǎn)360地圖標(biāo)注方法 平頂山外呼系統(tǒng)免費(fèi) 在哪里辦理400電話號碼 400電話申請服務(wù)商選什么

為什么要寫這篇文章

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

什么是property裝飾器

顧名思義,這是一個裝飾器,起到一個輔助作用,具體理解請看下面一個例子。我們知道,程序中有許多變量都有范圍的限制,比如年齡,工資,身高等不可能為負(fù)數(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("非法的年齡!默認(rèn)為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
非法的年齡!默認(rèn)為18
0

不可否認(rèn),這樣確實達(dá)到了我們想要的效果,事實上,Java語言就是這樣實現(xiàn)的。但是python具有更簡潔的表達(dá),就是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("非法的年齡!默認(rèn)為18")
a = A()
a.age = 19
print(a.age)
a.age = 180
print(a.age)

這里的@property相當(dāng)于get()方法,@age.setter相當(dāng)于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的最詳細(xì)使用方法的文章就介紹到這了,更多相關(guān)python property使用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • Python的@property的使用
  • 詳解Python裝飾器之@property
  • python property的使用技巧分享
  • python中@property的作用和getter setter的解釋
  • Python中關(guān)于property使用的小技巧

標(biāo)簽:隨州 天水 西安 白城 日照 股票 錦州 安慶

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《python中關(guān)于property的最詳細(xì)使用方法》,本文關(guān)鍵詞  python,中,關(guān)于,property,的,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《python中關(guān)于property的最詳細(xì)使用方法》相關(guān)的同類信息!
  • 本頁收集關(guān)于python中關(guān)于property的最詳細(xì)使用方法的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    香河县| 涟水县| 红桥区| 徐汇区| 文安县| 嘉义市| 余庆县| 南城县| 太湖县| 西平县| 大田县| 榆林市| 舒兰市| 平昌县| 裕民县| 临江市| 桂阳县| 温宿县| 洪泽县| 平和县| 嘉祥县| 井冈山市| 绥德县| 石河子市| 天峻县| 女性| 甘谷县| 赤城县| 大英县| 普格县| 普兰店市| 汉沽区| 富源县| 扬中市| 营山县| 鄂托克旗| 韶山市| 斗六市| 库伦旗| 嘉兴市| 宿州市|