<th id="uz6zr"><table id="uz6zr"><sub id="uz6zr"></sub></table></th> <tbody id="uz6zr"></tbody>
  • <menuitem id="uz6zr"><dfn id="uz6zr"></dfn></menuitem><menuitem id="uz6zr"><strong id="uz6zr"></strong></menuitem>

      1. 如何為 Python 基本類型自定義方法?

        上一篇 / 下一篇  2020-10-20 10:17:36

          我們知道,字符串str、整型int、浮點數float是 Python 的三大基本數據類型。
          我們也知道,在 Python 里面,一切都是對象,而對象一般有方法。所以,大家會看到下面這種寫法:
          a = 'abcde' 
          b = a.upper() 
          print(b) 
          其中的.upper()就是把字母轉成大寫的方法。
          我們在寫自己的類時,常常會定義很多的方法。那么,當字符串自帶的方法不夠時,我們是否有辦法自定義一些方法呢?
          比如說,我想要一個方法叫做.are_you_short(),如果字符串的長度小于5,返回 True,字符串的長度大于等于5,返回 False。
          我雖然可以單獨定義一個類來做這件事情:
          class MyStr: 
              def __init__(self, value): 
                  self.value = value 
           
              def are_you_short(self): 
                  return len(self.value) < 5 
          運行效果如下圖所示:
          但問題是,現在根據MyStr類初始化的對象,它看起來完全不像一個字符串。它只是一個普通的對象了。大家對比一下普通字符串的行為和這個MyStr對象的行為:
          MyStr對象,不僅打印不出內容,而且還不能通過加號進行拼接。
          看到這里,可能有同學會認為我要講魔術方法了。例如給MyStr實現.__str__()方法,就能打印出內容;實現.__add__()方法,就可以實現用加號拼接。
          但等等,哪里需要這么麻煩?一般有這種想法的同學,是剛剛學完 Python 的魔術方法,覺得什么事情都可以用魔術方法來解決。
          但實際上,要實現字符串的所有方法非常簡單!
          東西學得越多,就越容易把最簡單的知識給忘記了。想想是不是還有一個東西叫做繼承?
          我們修改一下MyStr的定義:
          class MyStr(str): 
              def are_you_short(self): 
                  return len(self) < 5 
          運行效果如下圖所示:
          不需要手動實現任何的魔術方法,直接就能擁有字符串的全部能力。
          大家也可以對 int、float甚至是列表、字典試一試,來實現自己的數據類型。
          需要注意的是,在繼承 Python 的數據類型時不要手動寫出__init__()方法,除非你知道你在干什么。

        TAG: 軟件開發 Python

         

        評分:0

        我來說兩句

        顯示全部

        :loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

        日歷

        « 2020-11-14  
        1234567
        891011121314
        15161718192021
        22232425262728
        2930     

        數據統計

        • 訪問量: 7553
        • 日志數: 66
        • 建立時間: 2020-08-11
        • 更新時間: 2020-11-13

        RSS訂閱

        Open Toolbar
        在线看黄AV免费悠久