约 1285 字

约 6 分钟

#Python 的内置函数 classmethod

说明:把一个方法封装成类方法。

#函数说明

def classmethod(fn):
    '''
    把一个方法封装成类方法

    :param fn: 要封装的方法
    :return: 封装后的方法
    '''

说明

将一个方法封装成类方法,通常以 装饰器 的形式使用。

类方法隐含的第一个参数就是类本身,就像实例方法接收实例作为参数一样。要声明一个类方法,按惯例请使用以下方案:

class C:
    @classmethod
    def fn(cls, arg1, arg2):
        pass

类方法的调用可以在类上进行,也可以在实例对象上进行。通过对象调用时,隐含的第一个参数传入的是类 而不是对象。如果该对象包含此类以外的属性,将无法被访问。

通过派生类(或派生类的实例对象)调用基类的类方法时,隐含的第一个参数传入的是派生类,而不是基类,因此派生类包含的额外属性可以被访问。

注意,类方法不是其它语言中的静态方法,要创建静态方法请使用 staticmethod 装饰器。

参数

  • fn - 要封装成类方法的函数

返回值

封装成类方法后的函数。

#示例

class Cat:
    name = '薛定谔'

    @classmethod
    def speak(cls):
        print(f'喵喵喵,我叫{cls.name}')

# 通过类调用
Cat.speak()

# 通过对象调用
cat = Cat()
cat.name = '狗'     # 给对象实例绑定 name 属性
cat.speak()         # 类方法访问的仍是类的 name 属性

>>> Establishing WebAssembly Runtime.

>>> Standby.

Powered by Shift.

#推荐阅读

更新: 2025/10/25

作者: PlanC

创建: 2025/6/9