实例方法
实例方法最大的特点就是,它最少也要包含一个 self 参数,用于绑定调用此方法的实例对象(Python 会自动完成绑定)。实例方法通常会用类对象直接调用,例如:
class Student(object):
def message(self):
print("这是一个实例方法")
stu = Student() # 实例化一个Student对象
stu.message() # 调用实例方法
# 这是一个实例方法
类方法
Python 类方法和实例方法相似,它最少也要包含一个参数,只不过类方法中通常将其命名为 cls,Python 会自动将类本身绑定给 cls 参数(注意,绑定的不是类对象)。也就是说,我们在调用类方法时,无需显式为 cls 参数传参。
class Student2:
@classmethod
def test(cls):
print("这是一个类方法")
# 使用类名直接调用类方法
Student2.test()
# 使用类对象调用类方法
stu2 = Student2()
stu2.test()
类方法推荐使用类名直接调用,当然也可以使用实例对象来调用(不推荐)
静态方法
静态方法,其实就是我们学过的函数,和函数唯一的区别是,静态方法定义在类这个空间(类命名空间)中,而函数则定义在程序所在的空间(全局命名空间)中。
静态方法没有类似 self、cls 这样的特殊参数,因此 Python 解释器不会对它包含的参数做任何类或对象的绑定。也正因为如此,类的静态方法中无法调用任何类属性和类方法。
静态方法需要使用@staticmethod修饰,例如:
class Student3(object):
@staticmethod
def test():
print("这是一个静态方法")
# 使用类名调用静态方法
Student3.test()
# 使用类对象调用静态方法
stu3 = Student3
stu3.test()