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

欢迎关注博主 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. 创建游戏对象,开始游戏


 

分析:

需要设计一个游戏类,名字是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()

执行结果:

 


三、案例小结

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

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

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

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

提问:

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

答案:

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

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

 

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王子玉博客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值