根据B站 “黑马程序员” 的python教程记录笔记。
在前面我们已经将面向对象的基本概念了解学习了一遍,这一篇额外补充静态方法,并且通过一个小实例来对所有方法进行一个综合演练。
一、静态方法
在开发时,如果需要在 类 中封装一个方法,这个方法:
即 不需要 访问 实例属性 或者调用 实例方法
也 不需要 访问 类属性 或者调用 类方法
这个时候,可以把这个方法封装成一个 静态方法
语法: @staticmethod def 静态方法名(): pass静态方法 需要用 修饰器@staticmethod 来标识,告诉解释器这是一个静态方法
下面通过实例演练帮助理解:
class Dog(object):
@staticmethod
def run(): # 将括号内的 self 参数去掉,因为不需要使用到
print("小狗要跑...") # 不访问到狗对象的 类属性 和 实例属性,就可以定义成静态方法
# 通过 类名. 调用静态方法 - 不需要创建对象
Dog.run() 运行结果:
操作具体在注释中有所解释
二、方法综合
通过实例进行演练消化所学知识:
# 需求:
# 1.设计一个 Game 类
# 2.属性:
# 定义一个 类属性 top_score 记录游戏的 历史最高分
# 定义一个 实例属性 player_name 记录 当前游戏的玩家姓名
# 3.方法:
# 静态方法 show_help 显示游戏帮助信息 - 不访问类属性和实例属性,所以为静态方法
# 类方法 show_top_score 显示历史最高分 - 访问类属性(历史最高分),所以为类方法
# 实例方法 start_game 开始当前玩家的游戏 - 访问实例属性(玩家名),所以为实例方法
# 4.主程序步骤:
# 1)查看帮助信息
# 2)查看历史最高分
# 3)创建游戏对象,开始游戏
class Game(object):
# 历史最高分
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("小明")
game.start_game()
# 案例小结
# 1.实例方法 -- 方法内部需要访问 实例属性
# 实例方法 内部可以使用 类名. 访问类属性
# 2.类方法 -- 方法内部 只 需要访问 类属性
# 3.静态方法 -- 方法内部既不需要访问 实例属性 也不需要访问 类属性运行结果:

版权声明:本文为weixin_64817459原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。