乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      Python:魔術(shù)方法(__getitem__、__len__等包含雙下劃線構(gòu)成的方法)的簡介、使用案例之詳細(xì)攻略

       處女座的程序猿 2022-06-28 發(fā)布于上海

      Python:魔術(shù)方法(__getitem__、__len__等包含雙下劃線構(gòu)成的方法)的簡介、使用案例之詳細(xì)攻略


      魔術(shù)方法Magic Method的簡介

      ? ? ? ?Magic Method,即魔術(shù)方法,顧名思義,這些方法很強(qiáng)大,充滿魔力,可以讓你實現(xiàn)很多功能。魔術(shù)方法是python內(nèi)置方法,不需要主動調(diào)用,存在的目的是為了給python的解釋器進(jìn)行調(diào)用,幾乎每個魔法方法都有一個對應(yīng)的內(nèi)置函數(shù),或者運算符,當(dāng)我們對這個對象使用這些函數(shù)或者運算符時就會調(diào)用類中的對應(yīng)魔法方法,可以理解為重寫這些python的內(nèi)置函數(shù)。

      (1)、舉例理解Magic Method

      ? ? ? ?在Python中,像__getitem__這種由兩個雙下劃線構(gòu)成的方法,統(tǒng)一被稱為魔術(shù)方法。魔術(shù)方法是為了給python解釋器用的。魔術(shù)方法是屬于類的方法,都是針對類來進(jìn)行操作。也就是說不需要實例化類就可以訪問到該方法,同時,實例化的對象都可以訪問到該方法。
      比如當(dāng)使用len(function)時,實際上調(diào)用的就是object.__len__方法。而在使用function['key']的形式來訪問元素時,實際上調(diào)用的是object.__getitem__(key)方法。
      使用__getitem__和__len__方法,我們就可以實現(xiàn)一個對自定義數(shù)據(jù)類型的迭代和訪問。

      常用的魔術(shù)方法使用案例

      1、常用方法

      (1)、__init__:初始化方法

      構(gòu)造器,當(dāng)一個實例被創(chuàng)建的時候調(diào)用的初始化方法

      class Test_init:
          def __init__(self):
              print("魔術(shù)方法之__init__方法")
      print(Test_init())
      


      (2)、__len__():返回容器中元素的個數(shù)

      要想針對類的對象實例使len()函數(shù)成功執(zhí)行,必須要在類中定義__len__()。如果沒有定義__len__(),那么輸入len(c1)會提示出錯,顯然錯誤原因是因為Class01類中并沒有l(wèi)en()的定義。因為len()必須接收一個具體的實例化對象的屬性,如果改成len(c1.values)也能成功執(zhí)行!

      # __ len__():返回元素的數(shù)量
      class Test_len(object):
          def __init__(self, *args):
              self.names = args
          def __len__(self):
              print("魔術(shù)方法之__len__方法")
              return len(self.names)
      res02 = Test_len('Bob', 'Alice', 'Tom')
      print(len(res02))

      2、比較操作符

      (1)、__lt__(self, other):定義小于號的行為

      x < y 調(diào)用 x__lt__(y)


      3、算數(shù)運算符

      (1)、__add__(self, other):定義加法的行為:+

      4、增量賦值運算

      (1)、__iadd__(self, other): 定義賦值加法的行為:+=

      5、一元操作符

      (1)、__pos__(self):定義正號的行為:+x

      6、容器類型

      (1)、_getitem__():返回鍵對應(yīng)的值

      如果在類中定義了這個__getitem__ 方法,那么它的實例對象(假定為p),可以像這樣p[key] 取值。當(dāng)實例對象做p[key] 運算時,會調(diào)用類中的方法__getitem__。__getitem __可以讓對象實現(xiàn)迭代功能,這樣可以不斷的調(diào)用數(shù)據(jù)。

      class Test_getitem:
          def __init__(self,id):
              self.id=id
              
          # ,它的實例對象P,可以以P[key]形式取值
          def __getitem__(self, item):   # 當(dāng)實例對象做P[key]運算時,就會調(diào)用類中的__getitem__()方法
              print("魔術(shù)方法之__getitem__方法")
              return self.id
       
      res = Test_getitem('This is id')
      print(res.id)
      print(res[0])   # 當(dāng)實例對象做P[key]運算時,就會調(diào)用類中的__getitem__()方法
      print(res['0000'])
      

        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多