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

    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>
          打開APP
          userphoto
          未登錄

          開通VIP,暢享免費電子書等14項超值服

          開通VIP
          在python的class中的,self到底是什么?

          答案:self可以理解為一個字典變量,內(nèi)部存的就是對象的數(shù)據(jù)屬性。如:{'name':'zhang','age':'18'}就是這些。

          注意只有數(shù)據(jù)屬性,并沒有創(chuàng)建新的類的方法。  類----->通過實例化生成----對象---->(對象只是一串類似于字典的數(shù)據(jù),沒有把類的里的方法復制給你,python沒有new這個方法?。?/strong>

          在python2中分為

          經(jīng)典類:

          class Box:

            pass

          新式類:

          class Box(object):

            pass

           

          在python3中,只有新式類:

          class Box:

            pass

           

          在python的class中的,self到底是什么?

           

          上實例:

          class.py

           1 class Box: 2     def __init__(self, boxname, size, color): 3         self.boxname = boxname 4         self.size = size 5         self.color = color  # self就是用于存儲對象屬性的集合,就算沒有屬性self也是必備的 6  7     def open(self, myself): 8         print('-->用自己的myself,打開那個%s,%s的%s' % (myself.color, myself.size, myself.boxname)) 9         print('-->用類自己的self,打開那個%s,%s的%s' % (myself.color, myself.size, myself.boxname))10 11     def close(self):12         print('-->關閉%s,謝謝' % self.boxname)13 14 15 b = Box('魔盒', '14m', '紅色')16 b.close()17 b.open(b)  # 本來就會自動傳一個self,現(xiàn)在傳入b,就會讓open多得到一個實例對象本身,print看看是什么。18 print(b.__dict__)  # 這里返回的就是self本身,self存儲屬性,沒有動作。

          以上代碼當中:

           

          self 就是 對象/實例 屬性的集合,

          他們之間的關系如下:

          1、Box是個類 ——》實例化——》b 對象/實例

           

          2、Box類python中顯示為:<class '__main__.Box'>  (接下一行)

          ——》實例化:b=Box('魔盒', '14m', '紅色')  (接下一行)

          ——》得到對象/實例b,顯示為<__main__.Box object at 0x00000233857AA518> 

           

          3、抽象體  (接下一行)

          ——》實例的過程  (接下一行)

          ——》得對對象,含有屬性:{'boxname': '魔盒', 'size': '14m', 'color': '紅色'},即self。

           

          self看似是一整個對象,實際上描述明白一個類就是生產(chǎn)對象的過程,描述了self就是得到了對象。所以self內(nèi)的健值可以直接使用。

          正如自然界中,一個有效的對象,必須包括:1、描述對象的屬性;2、對象的方法。

          所以self是必須的,也是對象中重要的特性。

           

          當掌握了這個原理以后,我們試試以下的代碼,感覺更加神奇。讓我們明白重要的是它的思路:

          class02.py

          class Box:    def myInit(mySelf, boxname, size, color):        mySelf.boxname = boxname        mySelf.size = size        mySelf.color = color  # 自己寫一個初始化函數(shù),一樣奏效,甚至不用self命名。其它函數(shù)當中用標準self        return mySelf  # 返回給實例化過程一個對象!神奇!并且含有對象屬性/字典    # def __init__(self, boxname, size, color):    #     self.boxname = boxname    #     self.size = size    #     self.color = color  #注釋掉原來標準的初始化    def open(self, myself):        print(self)        print('-->用自己的myself,打開那個%s,%s的%s' % (myself.color, myself.size, myself.boxname))        print('-->用類自己的self,打開那個%s,%s的%s' % (myself.color, myself.size, myself.boxname))    def close(self):        print('-->關閉%s,謝謝' % self.boxname)# 經(jīng)過改造,運行結(jié)果和標準初始化沒區(qū)別b = Box().myInit('魔盒', '14m', '紅色')# b = Box('魔盒', '14m', '紅色')#注釋掉原來標準的初始化方法b.close()b.open(b)  # 本來就會自動傳一個self,現(xiàn)在傳入b,就會讓open多得到一個實例對象本身,print看看是什么。print(b.__dict__)  # 這里返回的就是self本身,self存儲屬性,沒有動作。

           

          換個角度來講,

          對類的操作有:1、定義屬性  2、調(diào)節(jié)方法的選項

            ——》在適當?shù)脑O置以后《———

          類對的反饋有:1、得到屬性  2、執(zhí)行方法

           

          在類的函數(shù)當中,self為什么是必要參數(shù),因為他是對象的載體,可以理解成一個字典。

          通過以下代碼演示:

           1 class Box: 2     def myInit(mySelf, boxname, size, color): 3         print(mySelf.__dict__)#顯示為{}空字典 4         mySelf.boxname = boxname 5         mySelf.__dict__['aa'] = 'w'#甚至可以像字典一樣操作 6         mySelf.size = size 7         mySelf.color = color  # 自己寫一個初始化函數(shù),一樣奏效,甚至不用self命名。其它函數(shù)當中用標準self 8         return mySelf  # 返回給實例化過程一個對象!神奇!并且含有對象屬性/字典 9 10     # def __init__(self, boxname, size, color):11     #     self.boxname = boxname12     #     self.size = size13     #     self.color = color  #注釋掉原來標準的初始化14 15     def open(self, myself):16         print(self)17         print('-->用自己的myself,打開那個%s,%s的%s' % (myself.color, myself.size, myself.boxname))18         print('-->用類自己的self,打開那個%s,%s的%s' % (myself.color, myself.size, myself.boxname))19 20     def close(self):21         print('-->關閉%s,謝謝' % self.boxname)22 23 24 # 經(jīng)過改造,運行結(jié)果和標準初始化沒區(qū)別25 26 b = Box().myInit('魔盒', '14m', '紅色')27 # b = Box('魔盒', '14m', '紅色')#注釋掉原來標準的初始化方法28 b.close()29 b.open(b)  # 本來就會自動傳一個self,現(xiàn)在傳入b,就會讓open多得到一個實例對象本身,print看看是什么。30 print(b.__dict__)  # 這里返回的就是self本身,self存儲屬性,沒有動作。

          執(zhí)行結(jié)果

           

          {}-->關閉魔盒,謝謝<__main__.Box object at 0x0000026A2CBAA5F8>-->用自己的myself,打開那個紅色,14m的魔盒-->用類自己的self,打開那個紅色,14m的魔盒{'boxname': '魔盒', 'aa': 'w', 'size': '14m', 'color': '紅色'}

           

          注意看:'aa':'w' ,成功設置完成

           

          本站僅提供存儲服務,所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊舉報
          打開APP,閱讀全文并永久保存 查看更多類似文章
          猜你喜歡
          類似文章
          python 代碼中 self 有什么用途?
          python 復習-類與對象
          Python面向?qū)ο缶幊虖牧汩_始(2)—— 與對象相互了解
          python使用什么關鍵字定義類
          python面向?qū)ο缶幊獭惻c繼承 初認識
          Python 定義類和屬性
          更多類似文章 >>
          生活服務
          分享 收藏 導長圖 關注 下載文章
          綁定賬號成功
          后續(xù)可登錄賬號暢享VIP特權!
          如果VIP功能使用有故障,
          可點擊這里聯(lián)系客服!

          聯(lián)系客服