# Python 类方法

> 原文： [https://pythonbasics.org/classmethod/](https://pythonbasics.org/classmethod/)

类方法是一种在所有对象之间共享的方法。 要调用类方法，请将类作为第一个参数。

可以从实例和类本身中调用类方法。 所有这些都使用相同的方法。 该方法可以使用类变量和方法。



## 示例

### 类方法示例

要将方法转换为类方法，请在方法定义之前添加`@classmethod`。 该方法始终将类作为参数。

下面的示例定义了一个类方法。 然后，类本身可以使用该类方法。 在此示例中，类方法使用类属性名称。

```py
class Fruit:
    name = 'Fruitas'

    @classmethod
    def printName(cls):
        print('The name is:', cls.name)

Fruit.printName()

```

您可以同时使用对象和类的类方法：

```py
apple = Fruit()
berry = Fruit()

Fruit.printName()
apple.printName()
berry.printName()

```

现在，参数名称属于该类，如果您要通过使用对象来更改名称，它将忽略该参数。 但是，如果您要按班级进行操作，则它会更改，例如以下示例：

```py
apple.name="Apple"
Fruit.printName()
apple.printName()
berry.printName()

Fruit.name="Apple"
Fruit.printName()
apple.printName()
berry.printName()

```

### 替代表示法

通常使用 pythonic 表示法，但这并不是严格要求的。
您也可以使用这样的类方法：

```py
class Fruit:
    name = 'Fruitas'

    def printName(cls):
            print('The name is:', cls.name)

Fruit.printAge = classmethod(Fruit.printName)
Fruit.printAge()

```

### 类方法与静态方法

类似于静态方法，类方法不需要实例化对象。

类方法与静态方法的不同之处在于，静态方法不了解类本身。 在类方法中，参数始终是类本身。

静态方法对类或实例一无所知。 您也可以使用函数调用。

类方法在调用该方法时获取该类。 它了解类的属性和方法。

### 练习

类方法文章的练习：

*   什么是类方法？
*   类方法与静态方法有何不同？

[下载示例](https://gum.co/HhgpI)