Python - 面向对象编程 - 实战(5)
2024-08-26 20:49:33
前言
主要是针对静态方法、类方法、实例方法、类属性、实例属性的混合实战
需求
设计一个 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
最新文章
- js模块化AMD/CMD
- Java设计模式4:单例模式
- Laravel5.1-Eloquent ORM:起步
- Google140道面试题
- Nodejs文件服务器
- 如何更新Linux源
- Linux_系统信息
- UITableView进阶,cell刷新,界面返回 保持所选cell
- Topshelf创建Windows服务
- Css清除浮动最优方式之一
- 集合 (set) 的增删改查及 copy()方法
- 20181218 - PostgreSQL Auto Commit Guide(自动提交)
- SpringCloud学习笔记:熔断器Hystrix(5)
- 查询选修了全部课程的学生姓名_如何解?-MS-SQLServer/应用实例
- Firebird日期时间操作
- 哪些intel 网卡支持SR-IOV
- AI学习经验总结
- CentOS添加环境变量的三种方式
- (第一章)改善JavaScript,编写高质量代码。
- Node.js 从入门到茫然系列——入门篇