<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                少兒編程很好學之從0開始學python-8.3面向對象實戰 ![](http://i.imgur.com/kln3Udp.jpg) 面向對象是目前主流的編程方法。通過面向對象,可以將系統有效的隔離,使得程序容易維護和擴展。在這節課里,我們會先開發一個簡易的待辦清單來退回面向對象的好處。 ## 代辦清單 ![](http://pic.51yuansu.com/pic3/cover/01/18/92/59051e2a25484_610.jpg) 我們在學習生活中經常要安排處理很多事情。這些事情如果沒有被整理后,很容易忘掉。終端版的待辦事項就是為了解決這個問題實現。 我們首先定義個Task類: ~~~ class Todo: def __init__(self): self.taskList = [] self.__fileLocation__ = "./todo.txt" self.__loadTask__() def addTodo(self, thing): self.taskList.append(thing) self.__saveTodo__() return True def removeTodo(self, thing): if not thing in self.taskList: return False else: self.taskList.remove(thing) self.__saveTodo__() return True def searchTodo(self, thing): for todo in self.taskList: if thing in todo: return todo return None def getAllToto(self): return self.taskList def __loadTask__(self): file = open(self.__fileLocation__, 'r') self.taskList = file.readlines() def __saveTodo__(self): file = open(self.__fileLocation__, 'w') file.write('\n'.join(self.taskList)) file.close() ~~~ 這個類定義了一個taskList實例屬性,擁有:`getAllToto searchTodo removeTodo addTodo` 幾個方法。同時,為了所有的備忘事項通過 `__saveTodo__` 方法存儲到磁盤里。 接著,我們來使用這個類: ~~~ todo = Todo() while True: command = input('command arg') if 'exit' == command: exit(0) commandArr = command.split(' ') if 'addTodo' == commandArr[0]: todo.addTodo(commandArr[1]) elif 'removeTodo' == commandArr[0]: todo.removeTodo(commandArr[1]) elif 'getAllToto' == commandArr[0]: print(todo.getAllToto()) else: print('not find command') ~~~ 我們首先實例化了一個 Todo類。接著用`while` 循環不斷監聽用戶的輸入。程序根據用戶的輸入調用todo對象的不同方法。 ![](http://www.bkjia.com/uploads/allimg/140607/0129451435-0.jpg) 在這個項目里,我們復習了第六章學習的文件系統,將待辦清單存儲到磁盤,這樣數據就不會丟失了。在大型系統里,我們會把數據保存到更專業的**數據庫**中。 在 `Todo` 類中,`__saveTodo__` 和 `__loadTask__` 兩個方法我們定義成了私有方法,通過這種方式。我們把數據的底層存儲和上層使用隔離開,這樣使用`Todo`類的人就不會關注這些內部細節了。 ## 面向對象在游戲里的應用 面向對象在游戲里的使用就更普遍了,我們來用python模擬一下王者榮耀的亞瑟和安其拉。 ![](http://newsimg.5054399.com/uploads/userup/1711/191F104G05.jpg) ~~~ class Hero: def __init__(self, nickname, life_value, aggre_value): self.nickname = nickname self.life_value = life_value self.aggre_value = aggre_value def attack(self, enemy): self.skill() enemy.life_value = enemy.life_value - self.aggre_value def skill(self): print('skill') class Arthur(Hero): def skill(self): print('圣劍裁決') class Angela(Hero): def skill(self): print('熾熱關輝') ~~~ 我們定義了一個hero類,這個類包含 life_value aggre_value 兩個屬性,分別表示生命值和攻擊值。attack方法根據自己的aggre_value屬性的值扣減敵人血量。 `Arthur`類和`Angela`類用來表達亞瑟和安其拉。這兩個類復寫了 `skill`方法。讓亞瑟和安其拉擁有不同的技能。 ``` yanse = Arthur('yase',5000,100) anjiya = Angela('anjila', 3500, 200) anjiyaAttackCount= 0 yanseAttackCount = 0 while True: anjiya.attack(yanse) anjiyaAttackCount = anjiyaAttackCount+1 print(yanse.life\_value) if yanse.life\_value<=0: print('yase die') print(anjiyaAttackCount,yanseAttackCount) exit(0) yanse.attack(anjiya) yanseAttackCount = yanseAttackCount +1 print(anjiya.life\_value) if anjiya.life\_value<=0: print('anjila die') print(anjiyaAttackCount,yanseAttackCount) exit(0) ``` 英雄的攻擊技能會首先調用skill方法展示自己的技能,然后執行公共的扣血動作。 通過面向對象,將系統的公共部分和具體實現部分做到了很好的隔離,小朋友們是不是也有這種感覺啦? 經過了這么久的終端編程,是不是很乏了?下節課,我們就進入圖形編程了。我們寫的代碼也終于可以有一張漂亮的*臉*了,加油! **阿達老師-孩子身邊的編程專家** *完整課程請關注阿達老師,主頁里有完整的課程目錄和觀看地址*
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看