前言

主要是针对静态方法、类方法、实例方法、类属性、实例属性的混合实战

 

需求

设计一个 Game 类

属性

  • 定义一个类属性 top_score 记录游戏的历史最高分,这个属性很明显只跟游戏有关,跟实例对象无关,所以定义为类属性
  • 定义一个实例属性 player_name 记录当前游戏的玩家姓名

方法

  • 静态方法:showHelp,显示游戏帮助信息,这个方法不需要访问类属性,也不需要访问实例属性,所以可以定义为静态方法
  • 类方法:showTopScore,显示历史最高分,只需要访问类属性,所以定义为类方法
  • 实例方法:startGame,开始游戏,由实例对象调用

主程序

  1. 查看帮助信息
  2. 查看历史最高分
  3. 创建游戏对象,开始游戏
  4. 更新历史最高分

 

类图

Python - 面向对象编程 - 实战(5)_实例方法

 

实际代码

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