国际访客建议访问 Primers 编程伙伴 国际版站点 > Python 教程 > classmethod 以获得更好的体验。

# Python 的内置函数 classmethod

请查看 Python 内建函数列表 了解更多相关 API。

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

# 函数说明

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

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

!subtitle:说明

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

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

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

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

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

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

!subtitle:参数

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

!subtitle:返回值

封装成类方法后的函数。

# 示例

运行示例

class Cat:
    name = '薛定谔'

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

# 通过类调用
Cat.speak()

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

# 推荐阅读

本文 更新于: 2025-11-27 09:37:58 创建于: 2025-11-27 09:37:58