描述:
将方法转换为类方法。类方法将类作为隐式第一个参数接收,就像实例方法接收实例一样。
类方法可以在类(如c.f())上调用,也可以在实例(如c().f())上调用。除了类之外,实例被忽略。如果为派生类调用了类方法,则派生类对象将作为隐含的第一个参数传递。类方法不同于C++或Java静态方法。
也就是说,classmethod修饰符对应的函数不需要实例化,不需要 self 参数,但第一个参数需要是表示自身类的 cls 参数,可以来调用类的属性,类的方法,实例化对象。
语法:
class C:
@classmethod
def f(cls, arg1, arg2, ...): ...
返回值:
返回函数的类方法
下面例子展示classmethod()函数函数使用方法
class B(object):
num = 10
def func1(self):
print('self')
@classmethod
def func2(cls):
print('func2')
print(cls.num)
cls().func1()
B.func2() # 不需要实例化
输出
func2
10
self
引申:可以对比学习python staticmethod()函数。
本期classmethod()函数就学到这里。