初学 Python 笔记【二十六】类方法,类属性,静态方法

【类属性】

类属性就是针对类对象定义的属性

使用赋值语句在 class 关键字下方可以定义类属性

类属性用于记录与这个类相关的特征

 

【类方法】

类方法就是针对类对象定义的方法

在类方法内部可以直接访问类属性或者调用其他的类方法

语法:@classmethd      # 修饰符,告诉解释器这是一个类方法

   def 类方法名(cls):   # 由哪个类调用的方法,cls就是哪一个类的引用,同 self

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

在类方法内部,可以通过 cls. 访问类的属性,也可以通过 cls. 调用其他的类方法

 

【静态方法】

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

  • 既不需要访问实例属性,或者调用实例方法
  • 也不需要访问类属性,或者调用类方法

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

语法:@staticmethod

   def 静态方法名():

静态方法需要用修饰符(器),@staticmethod 来标识

通过 类名. 调用静态方法

 

class Tool(object):
    # 使用赋值语句定义类属性,记录所有工具对象的数量
    count = 0

    # 定义一个类方法,而不是实例方法
    @classmethod
    def show_tool_count(cls):
        # cls.count += 1
        # cls.__init__()
        print("工具对象的数量%d" % cls.count)

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

        # 让类属性的值+1
        Tool.count += 1


# 创建工具对象
tool1 = Tool("斧头")
tool2 = Tool("榔头")

# 调用类方法
Tool.show_tool_count()

 

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.创建游戏对象
gamer = Game("小明")
gamer.start_game()

 

上一篇:反射


下一篇:JavaSE学习笔记 - 反射技术