不加@classmethod是对象的方法,加了是类的方法
# 如果不加@classmethod,要调用b方法,需要先创建类的对象,用对象调用方法
class A(object):
def b(self):
print("aaa")
print(A().b()) # aaa None
# 如果不加@classmethod,不能直接用类调用方法
class A(object):
def b(self):
print("aaa")
print(A.b()) # TypeError: b() missing 1 required positional argument: 'self'
# 在方法前加了@classmethod装饰器,方法就变为类的方法,可以直接用类调用
class A(object):
@classmethod
def b(self):
print("aaa")
print(A.b()) # aaa None