<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          輕松學(xué)會面向?qū)ο蟮?篇---類可以規(guī)范數(shù)據(jù)的行為

          共 1592字,需瀏覽 4分鐘

           ·

          2021-03-22 16:20

          類可以規(guī)范數(shù)據(jù)的行為,數(shù)據(jù)有什么樣的行為,是人賦予的,因此,類規(guī)范的是人的行為。

          1. 保護數(shù)據(jù)不被肆意修改

          class Student():
          def __init__(self, name, age):
          self.name = name
          self.age = age


          stu = Student('小明', 14)
          print(f"{stu.name}今年{stu.age}")

          stu.age = 1000
          print(f"{stu.name}今年{stu.age}")

          在上面的例子中,我將stu的age屬性修改了1000,這顯然是不合理的,避免這種情況發(fā)生的辦法是將age修改為私有屬性。

          python的面向?qū)ο?,并沒有像其他面向?qū)ο笳Z言一樣,提供完整嚴(yán)格的訪問控制,只是約定用單個下劃線開頭的屬性和方法是私有的。

          class Student():
          def __init__(self, name, age):
          self.name = name
          self._age = None

          self.set_age(age)

          def set_age(self, age):
          if age < 7 or age > 20:
          raise Exception('年齡不符合要求')

          self._age = age

          def get_age(self):
          return self._age


          stu = Student('小明', 14)
          print(f"{stu.name}今年{stu.get_age()}")

          stu.set_age(1000)
          print(f"{stu.name}今年{stu.get_age()}")

          age屬性,并沒有直接暴露給使用者,而是提供了set_age和get_age兩個方法,對age屬性的修改和獲取都必須通過這兩個方法來進行,這樣就可以有效的限制使用者錯誤的使用age屬性。

          2. 定義數(shù)據(jù)行為的能力

          類提供的方法,定義了數(shù)據(jù)的能力,等價于約定了使用者可操作執(zhí)行的范圍。

          當(dāng)你使用一個開源庫時,如果提供給你的是一個類,那么你可以通過這個類的定義,了解到你可以做哪些操作。

          通常,好的代碼都有規(guī)范的描述清晰的注釋,通過看源代碼,你可以比查閱文檔更快的了解如何使用一個開源庫,并且挖掘出一些文檔里沒有介紹的方法。

          如果你需要向其他人提供一個類,你需要考慮哪些屬性可以被使用者修改,哪些屬性不應(yīng)當(dāng)對外開放,需要提供哪些方法讓使用者來應(yīng)用。

          我反復(fù)強調(diào),類是一個約定,約定有哪些數(shù)據(jù)可以被操作,約定有哪些方法可以使用。

          類幫助我們?nèi)ニ伎紨?shù)據(jù)本身所具有的內(nèi)容和形式,類幫助我們與其他人溝通交流,當(dāng)大家都認(rèn)可并熟悉這種約定方式后,交流自然順暢。

          3. 封裝

          何為封裝?對數(shù)據(jù)的管理即是封裝。

          定義一個類,就是對數(shù)據(jù)的管理。

          屬性的定義,是對數(shù)據(jù)內(nèi)容的管理。

          方法的定義,是對數(shù)據(jù)行為的管理。

          不必在抽象的概念上糾結(jié)太久,我強烈建議你從管理的角度來理解編程語言的概念。

          封裝一個類,目的是去做一件事情,為了做這件事情,需要哪些數(shù)據(jù),需要哪些步驟,這些數(shù)據(jù)就是類的屬性,步驟就是類的方法。

          類是一種約定,約定了我們要做一件事情需要哪些數(shù)據(jù),需要哪些方法,如果方法一詞你感覺陌生,我們也可以說,需要哪些能力。

          有了數(shù)據(jù),有了操作這些數(shù)據(jù)的能力,就可以做自己想要做的事情,這是一種貼近我們?nèi)粘K季S的思考問題的方式。


          瀏覽 54
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  一本色道久久爱牛牛 | 麻豆免费视频在线观看 | 久久夜色精品亚洲 | 久热免费视频在线观看 | 国产亚洲免费视频在线观看 |