亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

Python中@property的理解和使用示例

系統(tǒng) 1752 0

本文實(shí)例講述了Python中@property的理解和使用。分享給大家供大家參考,具體如下:

重看狗書(shū),看到對(duì)User表定義的時(shí)候有下面兩行

            
  @property
  def password(self):
    raise AttributeError('password is not a readable attribute')
  @password.setter
  def password(self, password):
    self.password_hash = generate_password_hash(password)


          

遂重溫下這個(gè)property的使用

在我們定義數(shù)據(jù)庫(kù)字段類的時(shí)候,往往需要對(duì)其中的類屬性做一些限制,一般用get和set方法來(lái)寫,那在python中,我們?cè)撛趺醋瞿軌蛏賹懘a,又能優(yōu)雅的實(shí)現(xiàn)想要的限制,減少錯(cuò)誤的發(fā)生呢,這時(shí)候就需要我們的 @property 閃亮登場(chǎng)啦,巴拉巴拉能量……..

用代碼來(lái)舉例子更容易理解,比如一個(gè)學(xué)生成績(jī)表定義成這樣

            
class Student(object):
  def get_score(self):
    return self._score
  def set_score(self, value):
    if not isinstance(value, int):
      raise ValueError('score must be an integer!')
    if value < 0 or value > 100:
      raise ValueError('score must between 0 ~ 100!')
    self._score = value


          

我們調(diào)用的時(shí)候需要這么調(diào)用:

            
>>> s = Student()
>>> s.set_score(60) # ok!
>>> s.get_score()
60
>>> s.set_score(9999)
Traceback (most recent call last):
 ...
ValueError: score must between 0 ~ 100!


          

但是為了方便,節(jié)省時(shí)間,我們不想寫 s.set_score(9999) 啊,直接寫 s.score = 9999 不是更快么,加了方法做限制不能讓調(diào)用的時(shí)候變麻煩啊, @property 快來(lái)幫忙….

            
class Student(object):
  @property
  def score(self):
    return self._score
  @score.setter
  def score(self,value):
    if not isinstance(value, int):
      raise ValueError('分?jǐn)?shù)必須是整數(shù)才行吶')
    if value < 0 or value > 100:
      raise ValueError('分?jǐn)?shù)必須0-100之間')
    self._score = value


          

看上面代碼可知,把 get 方法變?yōu)閷傩灾恍枰由? @property 裝飾器即可,此時(shí) @property 本身又會(huì)創(chuàng)建另外一個(gè)裝飾器 @score.setter ,負(fù)責(zé)把 set 方法變成給屬性賦值,這么做完后,我們調(diào)用起來(lái)既可控又方便

            
>>> s = Student()
>>> s.score = 60 # OK,實(shí)際轉(zhuǎn)化為s.set_score(60)
>>> s.score # OK,實(shí)際轉(zhuǎn)化為s.get_score()
60
>>> s.score = 9999
Traceback (most recent call last):
 ...
ValueError: score must between 0 ~ 100!


          

更多關(guān)于Python相關(guān)內(nèi)容可查看本站專題:《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python Socket編程技巧總結(jié)》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》及《Python入門與進(jìn)階經(jīng)典教程》

希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 亚洲一区二区三区久久久久 | 欧美a在线视频 | 国内揄拍国内精品久久 | 在线日韩国产 | 国产区视频在线 | 色综合欧美亚洲另类久久 | 99国产精品高清一区二区二区 | 免费一区二区三区免费视频 | 国产九九视频在线观看 | 伊人伊人伊人伊人 | 久久77777 | 久久精品免费一区二区三区 | 99热最新网址获取 | 奇米影视777在线观看 | 久久香焦| 亚洲精品一区二区久久这里 | 尤物精品视频在线观看 | 99久热在线精品视频观看 | 亚洲精品福利一区二区三区 | 亚洲爱婷婷色婷婷五月 | 99国产超薄丝袜足j在线播放 | 2022国产成人综合精品 | 免费观看黄色录像 | 亚洲精品国产综合久久一线 | 九九在线观看免费视频 | 久草在线最新 | 久久精品加勒比中文字幕 | 亚洲精品www久久久久久 | 日日搞夜夜操 | 国内精品久久久久影院免费 | 国产欧美日韩看片片在线人成 | 永久久久免费浮力影院 | 四虎国产一区 | 日本中文字幕不卡 | 亚洲国产欧美久久香综合 | 色综合久久加勒比高清88 | 欧洲自拍偷拍 | 中文字幕av一区 | 无遮挡一级毛片视频 | 久久精品成人一区二区三区 | 成人www视频 |