Python面向对象之类属性类方法静态方法(2)

在开发时,如果需要在类中定义一个方法,这个方法:
 既不需要访问实例属性也不需要调用实例方法;
 既不需要访问类属性也不需要调用类方法;
 这个时候,就可以把这个方法封装成静态方法;

静态方法语法如下:
@staticmethod
 def 静态方法名():
pass

静态方法需要修饰器 @staticmethod 来表示,告诉解释器这是一个静态方法;
 通过 类名. 调用静态方法;

静态方法示例
class Dog(object):
    @staticmethod
    def run():
        # 不需要访问类属性和实例属性的方法,就可以定义一个静态方法
        print("跳着跑")

def __init__(self, name):
        self.name = name

def bark(self):
        pass


# 通过 类名. 调用静态方法,不需要创建对象
Dog.run()

方法综合案例

案例需求:
1.设计一个Game类
2.属性:
 定义一个类属性top_score记录游戏最高分
 定义一个实例属性palyer记录游戏玩家名字
3.方法:
 静态方法show_help查看游戏帮助信息;
 类方法show_topscore显示游戏最高分;
 实例方法start_game开始当前玩家的游戏
4.主程序步骤
 查看帮助信息
 查看历史最高分
 创建游戏对象,开始游戏

案例分析:
 历史最高成绩--类属性
 玩家姓名--实例属性

显示玩法--静态方法
 显示历史最高成绩--类方法
 进入游戏--实例方法

综合案例演练
 同时使用类属性,实例属性,静态方法,类方法,实例方法;
class Game(object):
    top_score = 0
    @staticmethod
    def game_help():
        print("游戏帮助信息")
    @classmethod
    def show_topscore(cls):
        print("历史最高分数是:", cls.top_score)

def __init__(self, name):
        self.name = name

def play_game(self):
        print("%s 开始游戏了" % self.name)


# 查看游戏帮助文档
Game.game_help()
# 查看历史最高分
Game.show_topscore()
# 创建游戏对象
xiaoming = Game("小明")
# 进入游戏
xiaoming.play_game()

# 游戏帮助信息
# 历史最高分数是: 0
# 小明 开始游戏了

案例小结:
1.实例方法--方法内部需要访问实例属性;方法内部可以使用 类名. 查看类属性;
2.类方法--方法内部只需要访问类属性;
3.静态方法--方法内部既不需要访问类属性也不需要访问静态属性;
 提示:当一个方法内急需要访问实例属性也需要访问类属性时,应该使用示例方法;因为类只有一个,实例方法内部可以使用 类名. 查看类属性;

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/334563fdf99a2d0d91189a70ee1b93bf.html