【十六】classmethod()函数(1)

发布时间 2023-06-01 20:35:53作者: Chimengmeng

【十六】classmethod()函数(1)

【1】作用

  • 将方法转换为类方法。
    • 类方法将类作为隐式第一个参数接收,就像实例方法接收实例一样。
  • 类方法可以在类(如c.f())上调用,也可以在实例(如c().f())上调用。
    • 除了类之外,实例被忽略。
    • 如果为派生类调用了类方法,则派生类对象将作为隐含的第一个参数传递。
    • 类方法不同于C++或Java静态方法。
  • 也就是说,classmethod修饰符对应的函数不需要实例化,不需要 self 参数,但第一个参数需要是表示自身类的 cls 参数,可以来调用类的属性,类的方法,实例化对象。

【2】语法

class C:
    @classmethod
    def f(cls, arg1, arg2, ...): ...

【3】示例

  • 返回值:
    • 返回函数的类方法
    • 下面例子展示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