方法综合案例
案例提示:
- 实例方法——方法内部需要访问实例属性
实例方法内部可以使用 类名. 访问类属性 - 类方法——方法内部 只 需要访问类属性(或调用类方法)
- 静态方法——方法内部不需要访问实例属性和类属性
- 当方法内部既需要访问 实例属性又需要访问 类属性,应该定义成什么方法?
——应该定义成实例方法。因为类只有一个,在实例方法内部可以使用 类名. 访问类属性
需求
- 设计一个Game类
- 属性:
定义一个 类属性 top_score 记录游戏的历史最高分
定义一个 实例属性 player_name 记录当前游戏玩家姓名 - 方法:
静态方法 show_help 显示游戏帮助信息
类方法 show_top_score 显示历史最高分 实例方法 start_game 开始当前玩家的游戏 - 主程序步骤:
查看帮助信息
查看历史最高分
创建游戏对象,开始游戏
代码:
class Game(object): top_score = 0 def __init__(self,player_name): self.player_name = player_name @staticmethod def show_help(): print("游戏帮助信息") @classmethod def show_top_score(cls): print("历史最高分为 %d" % cls.top_score) def start_game(self): print("玩家%s 开始游戏" % self.player_name) # 查看游戏帮助信息(静态方法) Game.show_help() # 查看历史最高分(类方法) Game.show_top_score() # 创建游戏对象(实例方法) player1 = Game("xiaoming") player1.start_game()