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

python @propert裝飾器使用方法原理解析

 更新時間:2019年12月25日 11:15:26   作者:梁十安  
這篇文章主要介紹了python @propert裝飾器使用方法原理解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

這篇文章主要介紹了python @propert裝飾器使用方法原理解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

首先,@propert的作用是把類中的方法『變成』了屬性,方便通過實(shí)例訪問。propert可以有兩種用法:可以把一個方法變成只讀屬性;可以對一些屬性進(jìn)行過濾。

想象這樣一個場景,在實(shí)例化一個類之后,需要對類的一個屬性進(jìn)行賦值,這時候是沒有對屬性屬性被賦予的值進(jìn)行判斷的,如果屬性被賦予了一個不合適的值,那么代碼在后面執(zhí)行的時候就會報(bào)錯,為了避免這種情況,可以有兩種方法解決。

一:設(shè)置一個方法,對屬性值進(jìn)行判斷:

class Student():

  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  
if __name__ == '__main__':  s = Student()  s.set_score(value="88")  print(s.get_score())

再Student類中,為了避免直接對 _score 屬性操作,我們提供了 get_score 和 set_score 方法,這樣起到了封裝的作用,把一些不想對外公開的屬性隱蔽起來,而只是提供方法給用戶操作,在方法里面,我們可以檢查參數(shù)的合理性等。這樣做沒什么問題,但是我們有更簡單的方式來做這件事。

二:使用propert裝飾器。

class Teacher():
  @property
  def score(self):
    return self._score

  @score.setter
  def 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
if __name__ == '__main__':

  t = Teacher()
  t.score = 10
  print(t.score)
  t.score = 20
  print(t.score)

在上面,我們給方法 score 加上了 @property,于是我們可以把 score 當(dāng)成一個屬性來用,此時,又會創(chuàng)建一個新的裝飾器 score.setter,它可以把被裝飾的方法變成屬性來賦值。

另外,我們也不一定要使用 score.setter 這個裝飾器,這時 score 就變成一個只讀屬性了:

class test():
  def __init__(self, s1):
    self.s = s1

  @property
  def f1(self):
    return self.s

if __name__ == '__main__':

  t1 = test(s1=90)
  print(t1.f1)

注意:最后面一行的print(t1.f1)不要加括號,print(t1.f1()),要不會報(bào)錯'int' object is not callable

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

相關(guān)文章

  • python+logging+yaml實(shí)現(xiàn)日志分割

    python+logging+yaml實(shí)現(xiàn)日志分割

    這篇文章主要為大家詳細(xì)介紹了python+logging+yaml實(shí)現(xiàn)日志分割,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-07-07
  • Python的類實(shí)例屬性訪問規(guī)則探討

    Python的類實(shí)例屬性訪問規(guī)則探討

    這篇文章主要介紹了Python的類實(shí)例屬性訪問規(guī)則,本文總結(jié)了一些對C++和Java程序員來說不是很直觀的地方來說明Python中的類實(shí)例屬性訪問,需要的朋友可以參考下
    2015-01-01
  • Python MySQLdb模塊連接操作mysql數(shù)據(jù)庫實(shí)例

    Python MySQLdb模塊連接操作mysql數(shù)據(jù)庫實(shí)例

    這篇文章主要介紹了Python MySQLdb模塊連接操作mysql數(shù)據(jù)庫實(shí)例,本文直接給出操作mysql代碼實(shí)例,包含創(chuàng)建表、插入數(shù)據(jù)、插入多條數(shù)據(jù)、查詢數(shù)據(jù)等內(nèi)容,需要的朋友可以參考下
    2015-04-04
  • Python 操作 MongoDB 講解詳細(xì)

    Python 操作 MongoDB 講解詳細(xì)

    MongoDB是一款開源的、基于分布式的、面向文檔存儲的非關(guān)系型數(shù)據(jù)庫。擁有高性能、高可用,易擴(kuò)展的優(yōu)點(diǎn),并且支持豐富的查詢語言來支持讀寫操作以及更復(fù)雜的查詢等。接下來我們來看一下如何使用Python操作MongoDB數(shù)據(jù)庫
    2021-09-09
  • Python編程調(diào)用百度API實(shí)現(xiàn)地理位置經(jīng)緯度坐標(biāo)轉(zhuǎn)換示例

    Python編程調(diào)用百度API實(shí)現(xiàn)地理位置經(jīng)緯度坐標(biāo)轉(zhuǎn)換示例

    這篇文章主要介紹了Python編程調(diào)用百度API來實(shí)現(xiàn)地理位置經(jīng)緯度坐標(biāo)轉(zhuǎn)換的示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2021-10-10
  • python實(shí)現(xiàn)發(fā)送郵件

    python實(shí)現(xiàn)發(fā)送郵件

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)發(fā)送郵件,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-03-03
  • python 利用棧和隊(duì)列模擬遞歸的過程

    python 利用棧和隊(duì)列模擬遞歸的過程

    這篇文章主要介紹了python 利用棧和隊(duì)列模擬遞歸的過程,文中并通過兩段代碼給大家介紹了下遞歸和非遞歸的區(qū)別,需要的朋友可以參考下
    2018-05-05
  • python制作小說爬蟲實(shí)錄

    python制作小說爬蟲實(shí)錄

    本文給大家介紹的是作者所寫的第一個爬蟲程序的全過程,從構(gòu)思到思路到程序的編寫,非常的細(xì)致,有需要的小伙伴可以參考下
    2017-08-08
  • Python線程池thread?pool創(chuàng)建使用及實(shí)例代碼分享

    Python線程池thread?pool創(chuàng)建使用及實(shí)例代碼分享

    這篇文章主要介紹了Python線程池(thread?pool)創(chuàng)建使用及實(shí)例代碼分享,文章圍繞主題展開詳細(xì)的內(nèi)容介紹具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-06-06
  • Python可視化最頻繁使用的10大工具總結(jié)

    Python可視化最頻繁使用的10大工具總結(jié)

    數(shù)據(jù)可視化是數(shù)據(jù)科學(xué)中不可缺少的一部分,下面這篇文章主要給大家介紹了關(guān)于Python可視化最頻繁使用的10大工具,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-03-03

最新評論

中超| 峨眉山市| 丰顺县| 大余县| 修文县| 敖汉旗| 南江县| 定襄县| 施甸县| 富民县| 商洛市| 白朗县| 霞浦县| 龙岩市| 乡城县| 宜兰市| 许昌市| 平乡县| 万州区| 东乌珠穆沁旗| 陆河县| 灵寿县| 满洲里市| 光山县| 昌图县| 左权县| 南丰县| 南宁市| 盐津县| 松原市| 浦城县| 搜索| 孟连| 呈贡县| 高青县| 龙口市| 滦平县| 泗洪县| 南郑县| 松滋市| 宣化县|