Python内置函数classmethod()

classmethod(function)

该函数是一个装饰器函数,用来指定一个类的方法为类方法,没有此函数指定的类的方法则称为实例方法

声明类方法的语法如下:

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

类方法的第一个参数是类对象参数,在方法被调用的时候自动将类对象传入,参数名称约定为 cls。如果一个方法被标示为类方法,则该方法可被类对象调用(如 C.f()),也可以被类的实例对象调用(如 C().f())。

另外,类被继承后,子类也可以调用父类的类方法,但是第一个参数传入的是子类的类对象。

示例

>>> class ClassA:
...     @classmethod
...     def class_method(cls, arg1):
...             print(cls)
...             print(arg1)
...
>>> ClassA.class_method('This is a class method.')

This is a class method.
>>> 
>>> ClassA().class_method('This is a class method.')

This is a class method.
>>> 
>>> 
>>> class ClassB(ClassA):
...     pass
...
>>> ClassB.class_method('Class method is called for a derived class.')

Class method is called for a derived class.
>>> 
>>> ClassB().class_method('Class method is called for a derived class.')

Class method is called for a derived class.

你可能感兴趣的:(Python内置函数classmethod())