日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

Python-Class(類(lèi))生命周期和類(lèi)屬性方法(魔法方法)

系統(tǒng) 2192 0

內(nèi)置屬性和方法

方法名 類(lèi)型- 作用
__init__ 方法 類(lèi)實(shí)例化時(shí)自動(dòng)調(diào)用這個(gè)函數(shù)
__del__ 方法 對(duì)象被內(nèi)存中銷(xiāo)毀前,會(huì)被自動(dòng)調(diào)用
__str__ 方法 類(lèi)的實(shí)例打印時(shí)調(diào)用這個(gè)函數(shù)(返回)用戶(hù)看到的
__repr__ 方法 和上面的str函數(shù)一樣,只是這個(gè)時(shí)返回開(kāi)發(fā)者看到的
__ getattr __ 方法 當(dāng)調(diào)用不存在的屬性時(shí)訪(fǎng)問(wèn)這個(gè)方法
__call__ 方法 如果類(lèi)實(shí)現(xiàn)了這個(gè)方法,相當(dāng)于把這個(gè)類(lèi)型的對(duì)象當(dāng)作函數(shù)來(lái)使用,相當(dāng)于 重載了括號(hào)運(yùn)算符

具體參考Python3標(biāo)準(zhǔn)庫(kù)

生命周期

  • 一個(gè)對(duì)象從調(diào)用 類(lèi)名() 開(kāi)始創(chuàng)建,生命周期開(kāi)始
  • 一個(gè)對(duì)象 __del__ 方法一旦被調(diào)用,生命周期結(jié)束
  • 在對(duì)象生命周期內(nèi)可以訪(fǎng)問(wèn),對(duì)象屬性,或者讓對(duì)象調(diào)用方法

例如:

            
              
                class
              
              
                Cat
              
              
                :
              
              
                def
              
              
                __init__
              
              
                (
              
              self
              
                ,
              
               name
              
                )
              
              
                :
              
              
        self
              
                .
              
              name 
              
                =
              
               name
        
              
                print
              
              
                (
              
              
                '他來(lái)了 他來(lái)了'
              
              
                )
              
              
                def
              
              
                __del__
              
              
                (
              
              self
              
                )
              
              
                :
              
              
                print
              
              
                (
              
              
                '他走了 他走了'
              
              
                )
              
              
                #  Tom 是一個(gè)全局變量
              
              
tom 
              
                =
              
               Cat
              
                (
              
              
                'Tom'
              
              
                )
              
              
                print
              
              
                (
              
              tom
              
                .
              
              name
              
                )
              
              
                print
              
              
                (
              
              
                '-'
              
              
                *
              
              
                50
              
              
                )
              
            
          

執(zhí)行如下

            
              他來(lái)了 他來(lái)了
Tom
--------------------------------------------------
他走了 他走了

            
          

現(xiàn)在 我們調(diào)用 del 刪除 tom

            
              
                -
              
              
                -
              
               omit 
              
                -
              
              
                -
              
              
                #  Tom 是一個(gè)全局變量
              
              
tom 
              
                =
              
               Cat
              
                (
              
              
                'Tom'
              
              
                )
              
              
                print
              
              
                (
              
              tom
              
                .
              
              name
              
                )
              
              
                del
              
               tom

              
                print
              
              
                (
              
              
                '-'
              
              
                *
              
              
                50
              
              
                )
              
            
          
            
              他來(lái)了 他來(lái)了
Tom
他走了 他走了
--------------------------------------------------

            
          

Class魔法方法

上面的表格以及描述的差不多了,貼一段代碼來(lái)例舉

            
              
                class
              
              
                Cat
              
              
                :
              
              
                #  類(lèi)實(shí)例化時(shí)自動(dòng)調(diào)用這個(gè)函數(shù)
              
              
                def
              
              
                __init__
              
              
                (
              
              self
              
                ,
              
               name
              
                )
              
              
                :
              
              
        self
              
                .
              
              name 
              
                =
              
               name
        
              
                print
              
              
                (
              
              
                '%s他來(lái)了 他來(lái)了'
              
              
                %
              
               self
              
                .
              
              name
              
                )
              
              
                #  對(duì)象被內(nèi)存中銷(xiāo)毀前,會(huì)被自動(dòng)調(diào)用
              
              
                def
              
              
                __del__
              
              
                (
              
              self
              
                )
              
              
                :
              
              
                print
              
              
                (
              
              
                '他走了 他走了'
              
              
                )
              
              
                #  類(lèi)的實(shí)例打印時(shí)調(diào)用這個(gè)函數(shù)(返回)用戶(hù)看到的
              
              
                def
              
              
                __str__
              
              
                (
              
              self
              
                )
              
              
                :
              
              
                return
              
              
                '我是Cat的類(lèi)'
              
              
                #  和上面的str函數(shù)一樣,只是這個(gè)時(shí)返回開(kāi)發(fā)者看到的
              
              
                def
              
              
                __repr__
              
              
                (
              
              self
              
                )
              
              
                :
              
              
                return
              
              
                '__repr__'
              
              
                #  當(dāng)調(diào)用不存在的屬性時(shí)訪(fǎng)問(wèn)這個(gè)方法
              
              
                def
              
              
                __getattr__
              
              
                (
              
              self
              
                ,
              
               item
              
                )
              
              
                :
              
              
        item 
              
                =
              
              
                'A'
              
              
                print
              
              
                (
              
              
                '屬性不存在,默認(rèn)為 %s'
              
              
                %
              
               item
              
                )
              
              
                #  如果類(lèi)實(shí)現(xiàn)了這個(gè)方法,相當(dāng)于把這個(gè)類(lèi)型的對(duì)象當(dāng)作函數(shù)來(lái)使用,相當(dāng)于 重載了括號(hào)運(yùn)算符
              
              
                def
              
              
                __call__
              
              
                (
              
              self
              
                ,
              
              
                *
              
              args
              
                ,
              
              
                **
              
              kwargs
              
                )
              
              
                :
              
              
                print
              
              
                (
              
              
                '我是 %s 通過(guò)__call__轉(zhuǎn)函數(shù)實(shí)例化的'
              
              
                %
              
               args
              
                )
              
              
                #  Tom 是一個(gè)全局變量
              
              
tom 
              
                =
              
               Cat
              
                (
              
              
                'Tom'
              
              
                )
              
              
                print
              
              
                (
              
              tom
              
                .
              
              name
              
                )
              
              
                # del tom
              
              
                print
              
              
                (
              
              
                '-'
              
              
                *
              
              
                50
              
              
                )
              
              
                print
              
              
                (
              
              tom
              
                )
              
              
tom
              
                .
              
              sex

              
                print
              
              
                (
              
              
                '*'
              
              
                *
              
              
                50
              
              
                )
              
              
tom
              
                (
              
              
                'Tim'
              
              
                )
              
            
          

懶的同學(xué) 看下面 執(zhí)行結(jié)果

            
              Tom他來(lái)了 他來(lái)了
Tom
--------------------------------------------------
我是Cat的類(lèi)
屬性不存在,默認(rèn)為 A
**************************************************
我是 Tim 通過(guò)__call__轉(zhuǎn)函數(shù)實(shí)例化的
他走了 他走了

            
          

__call__ 如果沒(méi)有定義的話(huà) 就 tom('Tim') 就用實(shí)例直接調(diào)用類(lèi)的話(huà)會(huì)保持喲~


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 舟曲县| 井陉县| 榆林市| 应用必备| 敦化市| 漳州市| 敦煌市| 闵行区| 余江县| 新建县| 成安县| 西安市| 武陟县| 武强县| 海淀区| 南通市| 云南省| 大余县| 田东县| 英超| 荥阳市| 宕昌县| 日土县| 建平县| 旬阳县| 邢台市| 阜新| 桐乡市| 公安县| 英德市| 镇雄县| 布尔津县| 虎林市| 武乡县| 成安县| 资中县| 湾仔区| 会同县| 靖安县| 聂荣县| 兴宁市|