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

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                [TOC] ## 概念概述 在類內部定義的函數,分為兩大類: 1. 綁定方法: 綁定給誰,就應該由誰來調用,誰來調用就回把調用者當作第一個參數自動傳入 * 綁定到對象的方法: 在類內定義的,**沒有被任何裝飾器修飾的方法** * 綁定到類的方法: 在類內定義的,**被裝飾器classmethod修飾的方法** 2. 非綁定方法: 在類內定義的,**被staticmethod裝飾器裝飾的方法** 不與類或者對象綁定,類和對象都可以調用,但是沒有自動傳值那么一說。就是一個普通工具而已 >注意:與綁定到對象方法區分開,在類中直接定義的函數,沒有被任何裝飾器裝飾的,都是綁定到對象的方法,可不是普通函數,對象調用該方法會自動傳值,而staticmethod裝飾的方法,不管誰來調用,都沒有自動傳值一說 ## 案例詳述 ### 1.主代碼 先在以下函數中同事定義了三種綁定方法,代碼如下 ~~~ class Foo: def __init__(self,name1): self.name=name1 def tell(self): print('對象綁定方法:%s' %self.name) @classmethod def func(cls,name2): #cls=Foo print('類綁定方法:%s' %name2) @staticmethod def func1(x,y): print('非綁定方法:%s'%(x+y)) f=Foo('egon') ~~~ ### 2.綁定到對象的方法驗證 綁定給對象,就應該由對象來調用,自動將對象本身當作第一個參數傳入 ``` print(Foo.tell) print(f.tell) Foo.tell(f) f.tell() # 結果 <function Foo.tell at 0x000001819E04C950> <bound method Foo.tell of <__main__.Foo object at 0x000001819E04A860>> 對象綁定方法:egon 對象綁定方法:egon ``` **結論:** Foo.tell是普通函數,直接調用的話需要傳入對象才行 f.tell是綁定到對象的方法,可以直接使用,會自動傳值 ### 3.綁定到類的方法驗證 綁定給類,就應該由類來調用,自動將類本身當作第一個參數傳入 ``` print(Foo.func) print(f.func) Foo.func('noah') f.func('luogang') #結果 <bound method Foo.func of <class '__main__.Foo'>> <bound method Foo.func of <class '__main__.Foo'>> 類綁定方法:noah 類綁定方法:luogang ``` **結論:** Foo.func和f.func都是綁定到類的方法,會自動傳值 ### 4.非綁定方法驗證 非綁定方法,不與類或者對象綁定,誰都可以調用,沒有自動傳值一說 ``` print(Foo.func1) print(f.func1) Foo.func1(1,2) f.func1(1,2) 結果 <function Foo.func1 at 0x000001A0B669CA60> <function Foo.func1 at 0x000001A0B669CA60> 非綁定方法:3 非綁定方法:3 ``` **結論:** Foo.func1和f.func1都是非綁定方法,不會自己傳值,需要自己傳值
                  <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>

                              哎呀哎呀视频在线观看