如果需要学习类属性、类方法和静态方法可以看我之前的文章。
文章传送门:
类属性一
类属性二
类方法和静态方法
一、案例需求
1.设计一个Game类
2.属性:
- 定义一个类属性top_score记录游戏的历史最高分
- 定义一个实例属性player_name记录当前游戏的玩家姓名
3.方法:
- 静态方法show_help显示游戏帮助信息
- 类方法show_top_score显示历史最高分
- 实例方法start_game开始当前玩家的游戏
4.主程序步骤
- 查看帮助信息
- 查看历史最高分
- 创建游戏对象,开始游戏
分析:
需要设计一个游戏类,名字是Game,在游戏类中定义两个属性和三个方法。
看第一个属性历史最高分,这个属性和Game类有关而和每次游戏并没有直接关系,所以定义成类属性。第二个属性,当前玩家姓名,可能每次玩家不同所以定义成实例属性。
看方法,第一个显示游戏帮助信息,这个只需要在游戏中显示出提示的信息并不需要访问类属性和实例属性,这种方法定义为静态方法。第二个显示历史最高分,历史最高分是一个类属性,访问类属性的方法可以定义为类方法,第三个方法开始游戏,每次玩家开始游戏就需要调用这个方法,玩家姓名为实例属性这个方法就直接定义为实例方法。
二、案例代码
代码语言:python代码运行次数:69复制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、静态方法:方法内部,不需要访问实例属性和类属性
提问:
如果方法内部即需要访问实例属性又需要访问类属性,应该定义成什么方法?
答案:
定义为实例方法,因为,类只有一个,在实例方法内部可以使用 类名. 访问类属性
以上案例把学习过的类属性、类方法、静态方法知识点揉合到一起使用了一下,仔细看并没有什么技术含量,只是简单的使用来熟悉使用方法。
更多相关Python练习题可以移步去Python自学网 ,从基础入门免费课程开始,逐步深入学习python全栈体系课程,适合新手入门到精通全栈开发。