开心六月综合激情婷婷|欧美精品成人动漫二区|国产中文字幕综合色|亚洲人在线成视频

    1. 
      
        <b id="zqfy3"><legend id="zqfy3"><fieldset id="zqfy3"></fieldset></legend></b>
          <ul id="zqfy3"></ul>
          <blockquote id="zqfy3"><strong id="zqfy3"><dfn id="zqfy3"></dfn></strong></blockquote>
          <blockquote id="zqfy3"><legend id="zqfy3"></legend></blockquote>
          打開(kāi)APP
          userphoto
          未登錄

          開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

          開(kāi)通VIP
          python 代碼中 self 有什么用途?

          在python語(yǔ)言中編寫(xiě)面向?qū)ο蟮拇a時(shí),都會(huì)遇到 self 這個(gè)參數(shù),其代表一個(gè)類的實(shí)例。使用 self 訪問(wèn)一個(gè)類的方法和屬性,就綁定了用參數(shù)所要表示的屬性,之所以這樣做的原因是,python沒(méi)有提供相應(yīng)的語(yǔ)法來(lái)指向?qū)嵗膶傩?。python 中調(diào)用類的方法都是類的實(shí)例自動(dòng)傳遞自身所擁有的方法,而不是自動(dòng)接收傳遞來(lái)的方法:方法的第一個(gè)參數(shù)就是方法要調(diào)用的實(shí)例,self 總是指向當(dāng)前對(duì)象。

          看看下面一段代碼中,self 和 obj 是否指向同一個(gè)對(duì)象:

          class check: def __init__(self): print(' self 在內(nèi)存中的地址:',id(self)) obj = check()print(' 類的對(duì)象在內(nèi)存的地址:',id(obj))

          輸出結(jié)果:

          self 在內(nèi)存中的地址: 2074376855360

          類的對(duì)象在內(nèi)存的地址: 2074376855360

          接下來(lái)再看一段使用 self 的示例代碼:

          class car():          # init 方法, 即constructor    def __init__(self, model, color):        self.model = model        self.color = color              def show(self):        print('車(chē)型:', self.model )        print('顏色:', self.color )          # 兩個(gè)對(duì)象有不同的 self,各自的self包含各自的屬性audi = car('奧迪 a4', '藍(lán)色')ferrari = car('法拉利 488', '紅色')  audi.show()     #car.show(audi) # 輸出結(jié)果與上句相同ferrari.show()   #car.show(ferrari) # 輸出結(jié)果與上句相同  # 也可以像以下這樣使用print('奧迪車(chē)型是: ',audi.model)print('法拉利的顏色是: ',ferrari.color)

          輸出結(jié)果如下圖:

          在以上這段代碼中,這兩句print('奧迪車(chē)型是: ',audi.model) 和 print('法拉利的顏色是: ',ferrari.color) ,首先由constructor構(gòu)建方法,給兩個(gè)具體的對(duì)象指定了具體的對(duì)象,再給屬性賦值,就完成了對(duì)象的初始化,屬性(model,color)和對(duì)象(audi,ferrari)就建立了聯(lián)系。這種情形的背后,每個(gè)實(shí)例中都調(diào)用了方法,并把實(shí)例及其對(duì)應(yīng)的方法一起發(fā)送給所調(diào)用的方法(car.show(audi),car.show(ferrari)),其中 self 是constructor構(gòu)建方法和實(shí)例方法要傳遞的第一個(gè)參數(shù)。

          對(duì)于實(shí)例的方法和 constructor 構(gòu)建方法而言,self 必須作為第一個(gè)參數(shù),否則就會(huì)報(bào)錯(cuò)??纯聪旅娴氖纠a:

          # Self 必須是第一個(gè)參數(shù)class check: def __init__(): print('這是構(gòu)建方法 Constructor') object = check()print(' 本段代碼運(yùn)行正常') # 沒(méi)有把 self 作為參數(shù)傳遞,所以報(bào)錯(cuò)以下錯(cuò)誤Traceback (most recent call last): File '/home/c736b5fad311dd1eb3cd2e280260e7dd.py', line 6, in <module> object = check()TypeError: __init__() takes 0 positional arguments but 1 was given

          以上代碼段中,類check中定義的 __init__ 方法沒(méi)有把 Self 作為參數(shù)傳遞,運(yùn)行即報(bào)錯(cuò),如下圖所示:

          特別注意:Self 是python中的一種慣例用法,可以稱為(實(shí)例方法的)參數(shù),但不是關(guān)鍵字,可以用其他的名稱代替,但一般建議還是使用 Self 這個(gè)名稱,以便更容易地閱讀代碼。

          以下代碼段中 把 Self 替換為其他名稱:

          class this_is_class:     def __init__(in_place_of_self):         print('把參數(shù) Self的名稱改為 in_place_of_self')           object = this_is_class() 

          輸出結(jié)果如下圖:

          (本文完)

          本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)
          打開(kāi)APP,閱讀全文并永久保存 查看更多類似文章
          猜你喜歡
          類似文章
          Python 常用內(nèi)建方法
          Python數(shù)據(jù)分析系列文章之Python基礎(chǔ)
          山腰復(fù)習(xí)群知識(shí)點(diǎn)
          史上最細(xì)致講解!Python 5大常用魔術(shù)方法,一學(xué)就會(huì)
          一篇干貨好文,輕松掌握python魔法方法
          Python self用法詳解
          更多類似文章 >>
          生活服務(wù)
          分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
          綁定賬號(hào)成功
          后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
          如果VIP功能使用有故障,
          可點(diǎn)擊這里聯(lián)系客服!

          聯(lián)系客服