Python @classmethod 详解
时间: 2023-03-05 08:41:08 浏览: 99
在 Python 中,`@classmethod` 是一种装饰器,用于定义类方法。类方法与实例方法不同,它们不是操作实例的方法,而是操作类本身的方法。类方法是在类级别上调用的,而不是在实例级别上调用的。
`@classmethod` 装饰器用于声明一个类方法。它需要在方法定义之前放置。类方法的第一个参数通常是 cls,它指的是调用该方法的类本身,而不是实例。
下面是一个简单的示例,展示了如何使用 `@classmethod` 装饰器:
```python
class MyClass:
def __init__(self, name):
self.name = name
@classmethod
def from_dict(cls, dict_obj):
name = dict_obj.get('name')
return cls(name)
```
在上面的例子中,`from_dict()` 是一个类方法,它接收一个字典对象作为参数,从中提取一个名为 `name` 的值,并使用它来创建一个新的 `MyClass` 实例。由于这是一个类方法,第一个参数是 `cls`,而不是 `self`。因此,我们可以使用 `cls(name)` 来创建新的 `MyClass` 实例。
调用该方法的方式是通过类名,而不是实例,如下所示:
```python
my_dict = {'name': 'John'}
my_instance = MyClass.from_dict(my_dict)
print(my_instance.name) # 输出 "John"
```
总的来说,`@classmethod` 装饰器是一种方便的方式,可以在不创建实例的情况下在类级别上执行操作。