类方法
需要使用装饰器 @classmethod 来标识其为类方法,第一个参数必须是类对象,一般以 cls 作为第一个参数
类方法使用场景:当方法中需要使用类对象(如访问私有类属性等)时,定义类方法
类方法一般配合类属性使用
class Team(object):
__champion = 40
@classmethod
def get_champion(cls):
return cls.__champion
M = Team()
res = M.get_champion()
print(res)
40
静态方法
需要使用装饰器 @staticmethod 来标识其为静态方法,静态方法不需要传递实例对象或类对象(形参没有self/cls)
静态方法可以通过实例对象或类对象调用
静态方法使用场景:当方法中既不需要使用实例对象(如实例属性、实例方法),也不需要使用类对象(如类属性、类方法)时
取消不必要的参数传递,减少不必要的内存占用
class Team(object):
@staticmethod
def work():
print('this is staticmethod')
M = Team()
M.work()
Team.work()
this is staticmethod
this is staticmethod