最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2019年06月11日 08:38:35   作者:TKtalk  
這篇文章主要介紹了Python中@property的理解和使用,結(jié)合實例形式分析了Python中@property的功能、使用方法及相關(guān)操作注意事項,需要的朋友可以參考下

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

重看狗書,看到對User表定義的時候有下面兩行

  @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)

遂重溫下這個property的使用

在我們定義數(shù)據(jù)庫字段類的時候,往往需要對其中的類屬性做一些限制,一般用get和set方法來寫,那在python中,我們該怎么做能夠少寫代碼,又能優(yōu)雅的實現(xiàn)想要的限制,減少錯誤的發(fā)生呢,這時候就需要我們的@property閃亮登場啦,巴拉巴拉能量……..

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

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)用的時候需要這么調(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é)省時間,我們不想寫s.set_score(9999)啊,直接寫s.score = 9999不是更快么,加了方法做限制不能讓調(diào)用的時候變麻煩啊,@property快來幫忙….

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)閷傩灾恍枰由?code>@property裝飾器即可,此時@property本身又會創(chuàng)建另外一個裝飾器@score.setter,負(fù)責(zé)把set方法變成給屬性賦值,這么做完后,我們調(diào)用起來既可控又方便

>>> s = Student()
>>> s.score = 60 # OK,實際轉(zhuǎn)化為s.set_score(60)
>>> s.score # OK,實際轉(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)典教程

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

相關(guān)文章

  • pdf論文中python畫的圖Type 3 fonts字體不兼容的解決方案

    pdf論文中python畫的圖Type 3 fonts字體不兼容的解決方案

    這篇文章主要介紹了pdf論文中python畫的圖Type 3 fonts字體不兼容的解決方案,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • python爬蟲簡單的添加代理進(jìn)行訪問的實現(xiàn)代碼

    python爬蟲簡單的添加代理進(jìn)行訪問的實現(xiàn)代碼

    本文通過實例代碼給大家介紹了python爬蟲簡單的添加代理進(jìn)行訪問,代碼簡單易懂,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-04-04
  • python實現(xiàn)將list拼接為一個字符串

    python實現(xiàn)將list拼接為一個字符串

    這篇文章主要介紹了python實現(xiàn)將list拼接為一個字符串方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • Mac安裝python3的方法步驟

    Mac安裝python3的方法步驟

    這篇文章主要介紹了Mac安裝python3的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • 使用PyInstaller庫把Python程序打包成exe

    使用PyInstaller庫把Python程序打包成exe

    這篇文章介紹了使用PyInstaller庫把Python程序打包成exe的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-05-05
  • Python實現(xiàn)Windows上氣泡提醒效果的方法

    Python實現(xiàn)Windows上氣泡提醒效果的方法

    這篇文章主要介紹了Python實現(xiàn)Windows上氣泡提醒效果的方法,涉及Python針對windows窗口操作的相關(guān)技巧,需要的朋友可以參考下
    2015-06-06
  • Python實現(xiàn)將通信達(dá).day文件讀取為DataFrame

    Python實現(xiàn)將通信達(dá).day文件讀取為DataFrame

    今天小編就為大家分享一篇Python實現(xiàn)將通信達(dá).day文件讀取為DataFrame,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-12-12
  • 只用Python就可以制作的簡單詞云

    只用Python就可以制作的簡單詞云

    今天教大家如何只用Python制作簡單詞云,文中有非常詳細(xì)的介紹及代碼示例,對正在學(xué)習(xí)python的小伙伴們很有幫助,需要的朋友可以參考下
    2021-06-06
  • 在Mac中PyCharm配置python Anaconda環(huán)境過程圖解

    在Mac中PyCharm配置python Anaconda環(huán)境過程圖解

    這篇文章主要介紹了在Mac中PyCharm配置python Anaconda環(huán)境過程圖解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-03-03
  • Python序列類型的打包和解包實例

    Python序列類型的打包和解包實例

    今天小編就為大家分享一篇Python序列類型的打包和解包實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12

最新評論

东安县| 霍林郭勒市| 芦溪县| 和平区| 和龙市| 宜阳县| 威海市| 尚志市| 浮梁县| 铁岭县| 宁武县| 潞西市| 银川市| 广南县| 兴业县| 金湖县| 志丹县| 资阳市| 洛宁县| 山东| 望谟县| 明水县| 张家川| 鄢陵县| 辽源市| 阳春市| 杨浦区| 阳江市| SHOW| 长泰县| 石阡县| 视频| 彭泽县| 桂东县| 会泽县| 社会| 张家港市| 桐乡市| 高青县| 施甸县| 息烽县|