輕松搞懂Python的屬性和方法


 目標,區分一下幾個概念:

  • 實例屬性
  • 類屬性
  • 實例方法
  • 類方法
  • 靜態方法

 先來看一下需求:

  1. 設計一個 Game 類

  2. 屬性

  • 定義一個 類屬性 top_score 記錄游戲的 歷史最高分
  • 定義一個 實例屬性 player_name 記錄 當前游戲的玩家姓名
  1. 方法
  • 靜態方法 show_help 顯示游戲幫助信息
  • 類方法 show_top_score 顯示歷史最高分
  • 實例方法 start_game 開始當前玩家的游戲
  1. 主程序步驟
    • 查看幫助信息
    • 查看歷史最高分
    • 創建游戲對象,開始游戲

 類圖:

Game類圖

 實現:


class Game(object):
    top_score = 0   # 游戲最高分,類屬性

    @staticmethod
    def show_help():  # 靜態方法
        print("幫助信息:讓僵屍走進房間")

    @classmethod
    def show_top_score(cls):  # 類方法
        print("游戲最高分是 %d" % cls.top_score)

    def __init__(self, player_name):
        self.player_name = player_name  # 實例屬性

    def start_game(self):  # 實例方法
        print("[%s] 開始游戲..." % self.player_name)
        
        Game.top_score = 999   # 使用類名.修改歷史最高分
        

 測試:


# 1. 查看游戲幫助
Game.show_help()

# 2. 查看游戲最高分
Game.show_top_score()

# 3. 創建游戲對象,開始游戲
game = Game("小明")
game.start_game()

# 4. 游戲結束,查看游戲最高分
Game.show_top_score()

提問: 如果方法內部 即需要訪問 實例屬性,又需要訪問 類屬性,應該定義成什么方法?

應該定義 實例方法 因為,類只有一個,在 實例方法 內部可以使用 類名. 訪問類屬性

案例小結

  • 實例方法 —— 方法內部需要訪問 實例屬性
           實例方法內部可以使用 類名. 訪問類屬性
  • 類 方 法 —— 方法內部 只 需要訪問 類屬性
  • 靜態方法 —— 方法內部,不需要訪問 實例屬性 和 類屬性


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM