前言
主要是針對靜態方法、類方法、實例方法、類屬性、實例屬性的混合實戰
需求
設計一個 Game 類
屬性
- 定義一個類屬性 top_score 記錄游戲的歷史最高分,這個屬性很明顯只跟游戲有關,跟實例對象無關,所以定義為類屬性
- 定義一個實例屬性 player_name 記錄當前游戲的玩家姓名
方法
- 靜態方法:showHelp,顯示游戲幫助信息,這個方法不需要訪問類屬性,也不需要訪問實例屬性,所以可以定義為靜態方法
- 類方法:showTopScore,顯示歷史最高分,只需要訪問類屬性,所以定義為類方法
- 實例方法:startGame,開始游戲,由實例對象調用
主程序
- 查看幫助信息
- 查看歷史最高分
- 創建游戲對象,開始游戲
- 更新歷史最高分
類圖
實際代碼
class Game: # 歷史最高分 __top_score = 0 def __init__(self, player_name): # 定義實例屬性 self.__player_name = player_name @staticmethod def showHelp(): print("游戲幫助...help") @classmethod def showTopScore(cls): return cls.__top_score @classmethod def setTopScore(cls, score): cls.__top_score = score def startGame(self, score): # 1、玩游戲 print(f"{self.__player_name} 開始玩游戲了...") # 2、拿到分數,更新最高分 if score > self.showTopScore(): self.setTopScore(score) player1 = Game("小菠蘿") # 1、玩家查看游戲幫助 player1.showHelp() # 2、查看游戲最高分 print(player1.showTopScore()) # 3、開始游戲 player1.startGame(90) # 4、查看游戲最高分 print(player1.showTopScore()) # 輸出結果 游戲幫助...help 0 小菠蘿 開始玩游戲了... 90