【类属性】
类属性就是针对类对象定义的属性
使用赋值语句在 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()