Python 中的 Classmethod()

2024 年 8 月 29 日 | 阅读 3 分钟

Python 有一个内置函数 `classmethod()`,它可以将指定的函数变成一个类方法。

语法

参数:该方法接受函数名作为其参数。

返回类型:该方法返回转换为类方法的函数。

我们也可以使用装饰器形式 `@classmethod` 来定义类方法。

语法

其中,

函数:这是需要转换为类方法的函数。

返回值:函数的已转换类方法。

与实例绑定不同,类方法是绑定到类的。类方法可以由类和对象调用。类和对象都可以用来调用这些方法。

类方法 vs. 静态方法

虽然静态方法不需要任何特定参数,但类方法接受 `cls` 作为其第一个参数。

虽然静态方法无法访问或修改类状态,但类方法可以。

静态方法通常不知道类状态。它们是实用方法,在接收到参数后对其进行操作。另一方面,类必须是类方法的参数。

Python 的 `@classmethod` 装饰器和 `@staticmethod` 装饰器分别用于生成类方法和静态方法。

Python 类方法示例

此示例将展示如何创建简单的类方法。

在本例中,我们将学习如何构建一个类方法。为此,我们创建了一个名为 `Python` 的类,其中包含一个名为 `course` 的变量和一个名为 `algo` 的方法,该方法打印传递给它的对象。我们将一个名为 `Python.algo` 的方法传递给 `classmethod`,它将该方法转换为类方法。然后,我们不必创建函数对象就可以调用类函数 `algo`。

我们然后调用类函数 `algo`,而无需在将 `Python.algo` 方法传递给 `classmethod` 后构造函数对象,后者将该方法转换为类方法。

代码

输出

This is an algorithm:  Algorithm

使用 `classmethod()` 函数创建类方法

代码

输出

The given name is:  Javatpoint

使用类方法的工厂方法

当使用类名而不是对象调用多个函数时,工厂设计模式会使用 `classmethod()` 函数。

代码

输出

22
24
True