Python中关于类属性、类方法和静态方法的【综合案例】— 设计一个Game类

导读:本篇文章讲解 Python中关于类属性、类方法和静态方法的【综合案例】— 设计一个Game类,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

欢迎关注博主 python老鸟 或 前往 『Python自学网』, 从基础入门免费课程开始,逐步深入学习python全栈体系课程,适合新手入门到精通全栈开发。


免费专栏传送门:《Python基础教程

如果需要学习类属性、类方法和静态方法可以看我之前的文章。

文章传送门:

类属性一icon-default.png?t=M85Bhttp://t.csdn.cn/W8I9f

类属性二icon-default.png?t=M85Bhttp://t.csdn.cn/iELU2

类方法和静态方法icon-default.png?t=M85Bhttp://t.csdn.cn/whOgm

一、案例需求

1.设计一个Game类

2.属性:

  1. 定义一个类属性top_score记录游戏的历史最高分
  2. 定义一个实例属性player_name记录当前游戏的玩家姓名

3.方法:

  1. 静态方法show_help显示游戏帮助信息
  2. 类方法show_top_score显示历史最高分
  3. 实例方法start_game开始当前玩家的游戏

4.主程序步骤

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

Python中关于类属性、类方法和静态方法的【综合案例】— 设计一个Game类

 

分析:

需要设计一个游戏类,名字是Game,在游戏类中定义两个属性和三个方法。

看第一个属性历史最高分,这个属性和Game类有关而和每次游戏并没有直接关系,所以定义成类属性。第二个属性,当前玩家姓名,可能每次玩家不同所以定义成实例属性。

看方法,第一个显示游戏帮助信息,这个只需要在游戏中显示出提示的信息并不需要访问类属性和实例属性,这种方法定义为静态方法。第二个显示历史最高分,历史最高分是一个类属性,访问类属性的方法可以定义为类方法,第三个方法开始游戏,每次玩家开始游戏就需要调用这个方法,玩家姓名为实例属性这个方法就直接定义为实例方法。


二、案例代码

class Game():    # 类属性:历史最高分,初始为0(计数器)    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)# 1. 查看帮助信息Game.show_help()# 2. 查看历史最高分Game.show_top_score()# 3.创建游戏对象,开始游戏game = Game("python自学网")game.start_game()

执行结果:

Python中关于类属性、类方法和静态方法的【综合案例】— 设计一个Game类

 


三、案例小结

1、实例方法:方法内部需要访问实例属性

实例方法内部可以使用 类名. 访问类属性

2、类方法:方法内部只需要访问类属性

3、静态方法:方法内部,不需要访问实例属性和类属性

提问:

如果方法内部即需要访问实例属性又需要访问类属性,应该定义成什么方法?

答案:

定义为实例方法,因为,类只有一个,在实例方法内部可以使用 类名. 访问类属性

以上案例把学习过的类属性、类方法、静态方法知识点揉合到一起使用了一下,仔细看并没有什么技术含量,只是简单的使用来熟悉使用方法。

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/73314.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!