<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                [TOC] # 簡介 用起來像是使用的實例屬性一樣的特殊屬性,可以對應某個方法 # 經典類 ~~~ class Foo: def func(self): pass # 定義property屬性 @property def prop(self): return 10 # 調用 foo_obj = Foo() foo_obj.func() # 調用實例方法 print(foo_obj.prop) # 調用property屬性 ~~~ 注意: * 定義時,在實例方法的基礎上添加@property裝飾器,并且僅有一個self參數 * 調用時,無需括號 # 新式類 ~~~ class Goods: ''' py3才有@xxx.setter和@xxx.deleter ''' @property def price(self): print('@property') @price.setter def price(self, value): print('@price.setter') @price.deleter def price(self): print('@price.deleter') # 調用 obj = Goods() obj.price # 自動執行@property修飾的price方法,并獲取方法的返回值 obj.price = 123 # 自動執行 @price.setter修飾的price方法,并將123賦值給方法的參數 del obj.price # 自動執行@price.deleter修飾的price方法 ~~~ 輸出 ~~~ @property @price.setter @price.deleter ~~~ 注意: * 經典類中的屬性只有一種訪問方式,其對應被@property修飾的方法 * 新式類中的屬性有三種訪問方式,并分別對應了三個被@property, @方法名.setter, @方法名.deleter # property屬性 類屬性方式,創建值為property對象的類屬性 * 當使用類屬性的方式創建property屬性時,經典類和新式類無區別 ~~~ class Foo: def get_bar(self): return 'laowang' bar = property(get_bar) obj = Foo() result = obj.bar print(result) ~~~ property方法中有四個參數 * 第一個參數是方法名,調用`對象.屬性`自動觸發執行方法 * 第二個參數是方法名,調用`對象.屬性=xx`時自動觸發執行方法 * 第三個參數是方法名,調用`del 對象.屬性`時自動觸發執行方法 * 第四個參數是字符串,調用`對象.屬性.__doc__`,此參數是該屬性的描述信息 ~~~ class Foo(object): def get_bar(self): print('getter...') return 'laowang' def set_bar(self, value): '''必須兩個參數''' print('setter...') return 'set value ' + value def del_bar(self): print('deleter...') return 'laowang' BAR = property(get_bar, set_bar, del_bar, 'description...') obj = Foo() obj.BAR # 自動調用第一個參數中的定義的方法 obj.BAR = 'alex' # 自動調用第二個參數中定義的方法: set_bar方法,并將'alex'當做參數傳入 desc = Foo.BAR.__doc__ # 自動獲取第四個參數中設置的值:description print(desc) del obj.BAR # 自動調用第三個參數中定義的方法: del_bar方法 ~~~ 輸出 ~~~ getter... setter... description... deleter... ~~~ # 應用 使用property升級getter和setter方法 ~~~ class Money(object): def __init__(self): self.__money = 0 def getMoney(self): return self.__money def setMoney(self, value): if isinstance(value, int): self.__money = value else: print('error:不是整形數字') # 定義一個屬性,當這個money設置時調用setMoney,當獲取值時調用getMoney money = property(getMoney, setMoney) a= Money() a.money = 100 # 調用setMoney方法 print(a.money) # 調用getMoney方法 ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看