Python学习——面向对象_补充静态方法和进行所有方法的综合演练

​根据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版权协议,转载请附上原文出处链接和本声明。