前言

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

需求

设计一个 Game 类

属性

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

方法

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

主程序

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

类图

实际代码

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

最新文章

  1. js模块化AMD/CMD
  2. Java设计模式4:单例模式
  3. Laravel5.1-Eloquent ORM:起步
  4. Google140道面试题
  5. Nodejs文件服务器
  6. 如何更新Linux源
  7. Linux_系统信息
  8. UITableView进阶,cell刷新,界面返回 保持所选cell
  9. Topshelf创建Windows服务
  10. Css清除浮动最优方式之一
  11. 集合 (set) 的增删改查及 copy()方法
  12. 20181218 - PostgreSQL Auto Commit Guide(自动提交)
  13. SpringCloud学习笔记:熔断器Hystrix(5)
  14. 查询选修了全部课程的学生姓名_如何解?-MS-SQLServer/应用实例
  15. Firebird日期时间操作
  16. 哪些intel 网卡支持SR-IOV
  17. AI学习经验总结
  18. CentOS添加环境变量的三种方式
  19. (第一章)改善JavaScript,编写高质量代码。
  20. Node.js 从入门到茫然系列——入门篇

热门文章

  1. 一文彻底弄懂cookie、session、token
  2. Tomcat PUT方法任意写文件漏洞(CVE-2017-12615)
  3. switch-case例题
  4. 浅析php环境配置
  5. vue日记之可展开的消息气泡
  6. Distance Queries 距离咨询 (LCA倍增模板)
  7. URI 未注册(设置 | 语言和框架 | 架构和 DTD)
  8. skywalking简介
  9. MapReduce框架原理-MapTask和ReduceTask工作机制
  10. Use Module and Function instead of Class in Python