类方法
- 类方法就是针对类对象定义的方法
在类方法内部可以直接访问 类属性 或者调用其他的 类方法 - 类方法要用 修饰器@classmethod来标识,告诉解释器这是一个类方法
- 类方法第一个参数应该是cls
1. 由哪一个类调用的方法,方法内的cls就是哪一个类的引用
2. 这个参数和实例方法的第一个参数是 self类似
3. 提示 使用其他名称也可以,不过习惯使用 cls - 通过 类名.调用类方法,调用方法时,不需要传递cls参数
- 在方法内部
- 可以通过 cls. 访问类的属性
- 也可以通过 cls. 调用其他的类方法
- 类方法中不能访问实例曾元,实力方法中可以访问类成员
class Tool(object):
#使用赋值语句定义类属性,记录所有工具对象的数量
count = 0
@classmethod
def show_tool_count(cls):
print("工具数量的对象%s" % cls.count) #cls.类属性 这是访问类属性
def __init__(self,name):
self.name = name
#让类属性的值 +1
Tool.count += 1
#创建工具对象
tool1 = Tool("斧头")
tool2 = Tool("榔头")
#调用类方法
Tool.show_tool_count()
#输出类属性
print(Tool.count)
#输出
工具数量的对象2
2
静态方法
既不需要访问实例属性也不需要访问类属性,既不需要访问类方法,也不需要访问实例方法,静态方法括号里灭有self
class Dog(object):
@staticmethod
def run():
#不访问实例属性/类属性
print("小狗跑")
#通过类名.调用静态方法--不需要创建对象
Dog.run()
#输出
小狗跑
总结
1 . 实例方法: 方法内部需要访问 实例属性
实例方法内部可以使用 类名. 访问类属性
2 . 类方法 : 方法内部只有类属性
3 . 静态方法 : 方法内部,不需要访问实例属性和类属性