1. <nobr id="easjo"><address id="easjo"></address></nobr>

      <track id="easjo"><source id="easjo"></source></track>
      1. 
        

      2. <bdo id="easjo"><optgroup id="easjo"></optgroup></bdo>
      3. <track id="easjo"><source id="easjo"><em id="easjo"></em></source></track><option id="easjo"><span id="easjo"><em id="easjo"></em></span></option>
          貴州做網站公司
          貴州做網站公司~專業!靠譜!
          10年網站模板開發經驗,熟悉國內外開源網站程序,包括DEDECMS,WordPress,ZBlog,Discuz! 等網站程序,可為您提供網站建設,網站克隆,仿站,網頁設計,網站制作,網站推廣優化等服務。我們專注高端營銷型網站,企業官網,集團官網,自適應網站,手機網站,網絡營銷,網站優化,網站服務器環境搭建以及托管運維等。為客戶提供一站式網站解決方案?。?!

          property(關于property的詳細介紹以及案例分析)

          來源:互聯網轉載 時間:2024-05-01 12:39:25

          在綁定屬性時,如果我們直接把屬性暴露出去,雖然寫起來很簡單,但是,沒辦法檢查參數,導致可以把成績隨便改:

          s=Student()s.score=9999

          這顯然不合邏輯。為了限制score的范圍,可以通過一個set_score()方法來設置成績,再通過一個get_score()來獲取成績,這樣,在set_score()方法里,就可以檢查參數:

          classStudent(object):defget_score(self):returnself._scoredefset_score(self,value):ifnotisinstance(value,int):raiseValueError('scoremustbeaninteger!')ifvalue<0orvalue>100:raiseValueError('scoremustbetween0~100!')self._score=value

          現在,對任意的Student實例進行操作,就不能隨心所欲地設置score了:

          >>>s=Student()>>>s.set_score(60)#ok!>>>s.get_score()60>>>s.set_score(9999)Traceback(mostrecentcalllast):...ValueError:scoremustbetween0~100!

          但是,上面的調用方法又略顯復雜,沒有直接用屬性這么直接簡單。

          有沒有既能檢查參數,又可以用類似屬性這樣簡單的方式來訪問類的變量呢?對于追求完美的Python程序員來說,這是必須要做到的!

          還記得裝飾器(decorator)可以給函數動態加上功能嗎?對于類的方法,裝飾器一樣起作用。Python內置的@property裝飾器就是負責把一個方法變成屬性調用的:

          classStudent(object):@propertydefscore(self):returnself._score@score.setterdefscore(self,value):ifnotisinstance(value,int):raiseValueError('scoremustbeaninteger!')ifvalue<0orvalue>100:raiseValueError('scoremustbetween0~100!')self._score=value

          @property的實現比較復雜,我們先考察如何使用。把一個getter方法變成屬性,只需要加上@property就可以了,此時,@property本身又創建了另一個裝飾器@score.setter,負責把一個setter方法變成屬性賦值,于是,我們就擁有一個可控的屬性操作:

          >>>s=Student()>>>s.score=60#OK,實際轉化為s.set_score(60)>>>s.score#OK,實際轉化為s.get_score()60>>>s.score=9999Traceback(mostrecentcalllast):...ValueError:scoremustbetween0~100!

          注意到這個神奇的@property,我們在對實例屬性操作的時候,就知道該屬性很可能不是直接暴露的,而是通過getter和setter方法來實現的。

          還可以定義只讀屬性,只定義getter方法,不定義setter方法就是一個只讀屬性:

          classStudent(object):@propertydefbirth(self):returnself._birth@birth.setterdefbirth(self,value):self._birth=value@propertydefage(self):return2015-self._birth

          上面的birth是可讀寫屬性,而age就是一個只讀屬性,因為age可以根據birth和當前時間計算出來。

          @property廣泛應用在類的定義中,可以讓調用者寫出簡短的代碼,同時保證對參數進行必要的檢查,這樣,程序運行時就減少了出錯的可能性。


          標簽:property-

          c語言中正確的字符常量是用一對單引號將一個字符括起表示合法的字符常量。例如‘a’。數值包括整型、浮點型。整型可用十進制,八進制,十六進制。八進制前面要加0,后面...

          2022年天津專場考試原定于3月19日舉行,受疫情影響確定延期,但目前延期后的考試時間推遲。 符合報名條件的考生,須在規定時間登錄招考資訊網(www.zha...

          :喜歡聽,樂意看。指很受歡迎?!巴卣官Y料”喜聞樂見:[ xǐ wén lè jiàn ]詳細解釋1. 【解釋】:喜歡聽,樂意看。指很受歡迎。2. 【示例】:這是...

          據央視財經消息,擁有較高學歷且年輕的育兒嫂、月嫂,這幾年的需求不斷增多,薪酬也不斷上漲。央視財經從北京多家公司了解到,月嫂和育兒嫂月平均工資分別在15000元和7000元左右。相關閱讀:近幾年,月嫂行業發生了很大的變化。據了解,目前越來越多的高學歷人才開始追捧月嫂行業,這是社會發展的必然趨勢,也是勞動力素質升級的必然結果。城鎮居民收入及消費水平的提高為“月嫂”市場奠定發展基...

          1、首因效應是指最初接觸到的信息所形成的印象對我們以后的行為活動和評價的影響,實際上指的就是“第一印象”的影響。即人們根據最初獲得的信息所形成的印象不易改變,甚至會左右對后來獲得的新信息的解釋2、近因效應是指當人們識記一系列事 物時對末尾部分項目的記憶效果優于中間部分項目的現象。3、近因效應與首因效應相反,是指交往中最后- -次見面給人留 下的印象,這個印象在對方的腦海中也...

          一億越南盾等于多少人民幣2022?越南盾(越南語:??ng, 漢字:銅),越南的貨幣單位。用“?”記號表示。輔幣單位有 hào(毫) 和 xu(樞),1盾=10 hào或100 xu, 由于面值過小,很少使用。通常置于國名后來表示貨幣單位。一些海外越南人,如美籍越南人稱“盾”為“VND”。人民幣(R...

          TOP
          国产初高中生视频在线观看|亚洲一区中文|久久亚洲欧美国产精品|黄色网站入口免费进人
          1. <nobr id="easjo"><address id="easjo"></address></nobr>

              <track id="easjo"><source id="easjo"></source></track>
              1. 
                

              2. <bdo id="easjo"><optgroup id="easjo"></optgroup></bdo>
              3. <track id="easjo"><source id="easjo"><em id="easjo"></em></source></track><option id="easjo"><span id="easjo"><em id="easjo"></em></span></option>