<rp id="wnpn7"><ruby id="wnpn7"></ruby></rp>
<progress id="wnpn7"><track id="wnpn7"><rt id="wnpn7"></rt></track></progress>
<ruby id="wnpn7"></ruby>
<ruby id="wnpn7"><blockquote id="wnpn7"><div id="wnpn7"></div></blockquote></ruby>

    1. <em id="wnpn7"><ruby id="wnpn7"><input id="wnpn7"></input></ruby></em>
      1. <button id="wnpn7"><acronym id="wnpn7"></acronym></button><button id="wnpn7"><acronym id="wnpn7"></acronym></button>

        <rp id="wnpn7"><acronym id="wnpn7"></acronym></rp>

        <li id="wnpn7"><object id="wnpn7"><u id="wnpn7"></u></object></li>
        VB.net 2010 視頻教程 VB.net 2010 視頻教程 python基礎視頻教程
        SQL Server 2008 視頻教程 c#入門經典教程 Visual Basic從門到精通視頻教程
        當前位置:
        首頁 > 編程開發 > python3 >
        • python3教程之通過實例解析python描述符原理作用

        本站最新發布   Python從入門到精通|Python基礎教程
        試聽地址  
        http://www.squ68.com/eschool/python.html


        這篇文章主要介紹了通過實例解析python描述符原理作用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

        本質上看,描述符是一個類,只不過它定義了另一個類中屬性的訪問方式。換句話說,一個類可以將屬性管理全權委托給描述符類。

        描述符類基于以下三種特殊方法,換句話說,這三種方法組成了描述符協議:

        • __set__(self, obj, type = None): 在設置屬性時,將調用這一方法。
        • __get__(self, obj, value): 在讀取屬性時將調用這一方法。
        • __delete__(self, obj): 對屬性調用del時將調用這一方法。

        其中,實現了setter和getter方法的描述符被稱為數據描述符,反之,如果只實現了getter方法,則稱為非數據描述符。

        ?
        1
        2
        3
        4
        5
        6
        7
        8
        9
        10
        11
        12
        13
        14
        15
        16
        17
        18
        19
        20
        #描述符類
        class revealAccess:
          def __init__(self, initval = None, name = 'var'):
            self.val = initval
            self.name = name
          def __get__(self, obj, objtype):
            print("Retrieving", self.name)
            return self.val
          def __set__(self, obj, val):
            print("updating", self.name)
            self.val = val
         
        class myClass:
          x = revelAccess(10, 'var "x"')
          y = 5
        m = myClass()
        print(m.x)
        m.x = 20
        print(m.x)
        print(m.y)<br>
        ?
        1
        2
        3
        4
        5
        6
        Retrieving var "x"
        10
        updating var "x"
        Retrieving var "x"
        20
        5

        如果一個類的某個屬性有數據描述符,那么每次查找這個屬性時,都會調用描述符的__get__()方法,并返回它的值;同樣,每次在對屬性賦值時,也會調用__set__()方法。
        當每次使用del類對象.屬性(或者delattr(類對象,屬性))語句時,都會調用該方法。

        以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

        相關教程
                
        免费看成年人视频大全_免费看成年人视频在线观看