一 类方法

1 什么是类方法?

供类自己调用的方法,访问类属性一般需要此方法。

2 怎么针对类对象定义一个类方法

@classmethod

def 类方法名(cls):

    pass

类方法需要修饰器

python实例化一个类 python写一个类方法_Python类方法、静态方法和实例方法

来标识, 告诉解释器这是一个类方法

类方法的第一个参数应该是cls,

        由哪一个类调用的方法,方法内的cls就是哪一个类的引用

        这个参数和实例方法的第一个参数与slef类似

        提示使用其他名称也可以,不过习惯使用cls

通过类名,调用类方法,调用方法时,不需要传递cls参数

在方法内部

         可以通过cls,访问类的属性

         也可以通过cls,调用其他的类方法

3 代码结构

#!usr/bin/python
class Tool(object):
    #count = 0赋值语句定义类属性
    count = 0
    #cls标识符定义类方法
    @classmethod
    def show_tool_count(cls):
        print("工具数量是 %d" %cls.count)
    def __init__(self,name):
        self.name = name
        Tool.count +=1

tool1 = Tool("fuzi")
tool2 = Tool("juzi")

Tool.show_tool_count()
>>>工具数量是 2

二静态方法

1 什么是静态方法

在开发时,如果需要在类中封装一个方法,这个方法:

   既不需要访问实例属性或者实例方法,

   也不需要访问类属性或者类方法

这个时候就可以把这个方法封装成一个静态方法。

语法如下:

@staticmethod

def 静态方法名():

   pass

三 实例方法

实例方法就是调用封装在类中的属性的和方法,带self形参的。

四 综合案例需求

需求:

1 设计一个Game类

2 属性:

   定义一个类属性 top_score记录游戏的历史最高分

   定义一个实例属性play_name 记录当前游戏的玩家姓名

3 方法

   静态方法show_help显示游戏帮助信息

   类方法show_top_score显示历史最高分

   实例方法start_game开始当前玩家的游戏

4 主程序步骤

   1)查看帮助信息

   2)查看历史最高分

   3)创建游戏对象,开始游戏

代码实现:

#!usr/bin/python
class Game():
    #静态方法
    @staticmethod
    def show_help():
        print("帮助信息:植物大战僵尸")
    #类方法
    count = 0
    @classmethod
    def show_top_score(cls):
        print("历史最高分是 %d" %cls.count)
    #实例方法
    #属性(玩家姓名)+游戏方法
    def __init__(self,name):
        self.name = name
    def play_game(self):
        print("%s 进入了游戏" %self.name)

xiaoming = Game("小明")

Game.show_help()
Game.show_top_score()
xiaoming.play_game()
帮助信息:植物大战僵尸
历史最高分是 0
小明 进入了游戏