【python】类方法classmethod

450 阅读1分钟
class Example(object):
    def __init__(self):
        pass

    def instance_func(self):
        pass

    @classmethod
    def cls_func(cls):
        pass

    @staticmethod
    def static_func():
        pass


Example.cls_func()
Example.static_func()
ex = Example()
ex.instance_func()

类方法可以和静态方法一样直接使用。

重要

cls指的是调用该函数的类,子类调用父类的cls方法,第一个参数cls是子类

class FatherClass(object):
    name = "father class"

    @classmethod
    def cls_func(cls):
        print(cls.name)


class SonClass(FatherClass):
    name = 'son class'

    @classmethod
    def func(cls):
        cls.cls_func()


SonClass.func()
son class

由此看来,cls可以看作一个普通参数,其参数值为调用该方法的类