三分钟透彻理解Python中的@staticmethod和@classmethod
warning:
这篇文章距离上次修改已过437天,其中的内容可能已经有所变动。
在Python中,@staticmethod 和 @classmethod 是装饰器,用于修饰类中的方法,使得方法具有特定的用途。
@staticmethod装饰器会使得该方法成为一个静态方法,它不接收特定的self或cls参数,即它是一个与类或其实例无关的普通函数,只是把它放在了类的命名空间里。@classmethod装饰器会使得该方法成为一个类方法,它接收cls参数(代表类本身),但不接收self(代表实例)。类方法允许在不创建类的实例的情况下调用。
下面是两者的简单示例:
class MyClass:
@staticmethod
def static_method():
print("This is a static method.")
@classmethod
def class_method(cls):
print("This is a class method.")
# 调用静态方法
MyClass.static_method()
# 调用类方法
MyClass.class_method()在这个例子中,static_method 不需要访问实例或类变量,所以我们使用了 @staticmethod 。而 class_method 需要访问类变量,所以我们使用了 @classmethod 。
评论已关闭