python classmethod staticmetod
时间: 2023-10-09 22:15:29 浏览: 38
@classmethod和@staticmethod是Python中用于定义类方法和静态方法的装饰器。
@classmethod装饰器用于定义类方法,类方法是将类自身作为参数传入函数中的方法。类方法可以通过类名调用,也可以通过实例调用。在类方法中,可以访问类变量和调用其他类方法。
@staticmethod装饰器用于定义静态方法,静态方法不需要传入类或实例作为参数。静态方法可以通过类名调用,也可以通过实例调用。静态方法通常用于与类相关但不需要访问类变量或其他类方法的功能。
以下是一个使用@classmethod和@staticmethod的示例:
```python
class MyClass:
class_variable = "This is a class variable"
@classmethod
def class_method(cls):
print(cls.class_variable)
print("This is a class method")
@staticmethod
def static_method():
print("This is a static method")
# 调用类方法
MyClass.class_method()
# 调用静态方法
MyClass.static_method()
```
在这个例子中,`class_method`是一个类方法,通过`@classmethod`装饰器进行定义。在类方法中,我们可以访问类变量`class_variable`并执行其他操作。
`static_method`是一个静态方法,通过`@staticmethod`装饰器进行定义。静态方法不需要传入类或实例作为参数,因此无法访问类变量,只能执行与类相关的功能。
请注意,类方法和静态方法都可以通过类名调用,也可以通过实例调用。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* [python中@classmethod 与@staticmethod用法](https://blog.csdn.net/peiwang245/article/details/97399216)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
- *2* *3* [Python进阶(六):@classmethod和@staicmethod](https://blog.csdn.net/weixin_37720172/article/details/78380893)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]