【Python】Python中的@staticmethod和@classmethod的用法
文章目录
- 【Python】Python中的@staticmethod和@classmethod的用法
- 1. @staticmethod
- 2. @classmethod
1. @staticmethod
- 静态方法是属于类而不是类的实例的方法。
- 静态方法不需要访问类的实例或实例的状态。因此,它们不接受 self 参数。
- 可以通过类名直接调用静态方法,也可以通过实例调用。
2. @classmethod
- 类方法是属于类的方法,它可以访问类的状态,但不能访问实例的状态。
- 类方法的第一个参数是类本身,通常命名为 cls。
- 类方法可以通过类名直接调用,也可以通过实例调用。
class MyFoo(object):def __init__(self):passdef greet_foo(self):print("Foo")@staticmethoddef static_foo():print("Hello: ")@classmethoddef class_foo(cls):print("Hello: ")cls().greet_foo()
MyFoo.static_foo()
MyFoo.class_foo()
Hello:
Hello:
Foo
总的来说,主要的区别在于静态方法不接受类或实例参数,而类方法接受一个表示类的参数。选择使用哪种方法取决于你的需求。如果方法不需要访问实例状态或类状态,可以使用静态方法。如果方法需要访问类状态,可以使用类方法。