當前位置 主頁 > 網站技術 > 代碼類 > 最大化 縮小

    Python面向對象封裝操作案例詳解 II

    欄目:代碼類 時間:2020-01-02 15:06

    本文實例講述了Python面向對象封裝操作。分享給大家供大家參考,具體如下:

    目標

    士兵突擊案例
    身份運算符

    封裝

    封裝 是面向對象編程的一大特點
    面向對象編程的 第一步 —— 將 屬性 和 方法 封裝 到一個抽象的 類 中
    外界 使用 類 創建 對象,然后 讓對象調用方法
    對象方法的細節 都被 封裝 在 類的內部
    一個對象的 屬性 可以是 另外一個類創建的對象

    01. 士兵突擊

    需求

    士兵 許三多 有一把 AK47
    士兵 可以 開火
    槍 能夠 發射 子彈
    槍 裝填 裝填子彈 —— 增加子彈數量
    在這里插入圖片描述

    1.1 開發槍類

    shoot 方法需求

    1> 判斷是否有子彈,沒有子彈無法射擊
    2> 使用 print 提示射擊,并且輸出子彈數量

    class Gun:
    
      def __init__(self, model):
    
        # 槍的型號
        self.model = model
        # 子彈數量
        self.bullet_count = 0
    
      def add_bullet(self, count):
    
        self.bullet_count += count
    
      def shoot(self):
    
        # 判斷是否還有子彈
        if self.bullet_count <= 0:
          print("沒有子彈了...")
    
          return
    
        # 發射一顆子彈
        self.bullet_count -= 1
        
        print("%s 發射子彈[%d]..." % (self.model, self.bullet_count))
    
    # 創建槍對象
    ak47 = Gun("ak47")
    ak47.add_bullet(50)
    ak47.shoot()
    

    1.2 開發士兵類

    假設:每一個新兵 都 沒有槍

    定義沒有初始值的屬性

    在定義屬性時,如果 不知道設置什么初始值,可以設置為 None

    None 關鍵字 表示 什么都沒有
    表示一個 空對象,沒有方法和屬性,是一個特殊的常量
    可以將 None 賦值給任何一個變量
    fire 方法需求

    1> 判斷是否有槍,沒有槍沒法沖鋒
    2> 喊一聲口號
    3> 裝填子彈
    4> 射擊

    class Soldier:
    
      def __init__(self, name):
    
        # 姓名
        self.name = name
        # 槍,士兵初始沒有槍 None 關鍵字表示什么都沒有
        self.gun = None
    
      def fire(self):
    
        # 1. 判斷士兵是否有槍
        if self.gun is None:
          print("[%s] 還沒有槍..." % self.name)
    
          return
    
        # 2. 高喊口號
        print("沖啊...[%s]" % self.name)
    
        # 3. 讓槍裝填子彈
        self.gun.add_bullet(50)
    
        # 4. 讓槍發射子彈
        self.gun.shoot()
    

    小結

    創建了一個 士兵類,使用到 init 內置方法
    在定義屬性時,如果 不知道設置什么初始值,可以設置為 None
    在 封裝的 方法內部,還可以讓 自己的 使用其他類創建的對象屬性 調用已經 封裝好的方法

    02. 身份運算符

    身份運算符用于 比較 兩個對象的 內存地址 是否一致 —— 是否是對同一個對象的引用

    在 Python 中針對 None 比較時,建議使用 is 判斷
    在這里插入圖片描述
    is 與 == 區別:
    is 用于判斷 兩個變量 引用對象是否為同一個
    == 用于判斷 引用變量的值 是否相等

    >>> a = [1, 2, 3]
    >>> b = [1, 2, 3]
    >>> b is a 
    False
    >>> b == a
    True
    

    更多關于Python相關內容感興趣的讀者可查看本站專題:《Python面向對象程序設計入門與進階教程》、《Python數據結構與算法教程》、《Python函數使用技巧總結》、《Python字符串操作技巧匯總》、《Python編碼操作技巧總結》及《Python入門與進階經典教程》

    下一篇:沒有了
青海十一选五开奖数据