静态方法
静态方法与实例方法有以下不同:
(1) 静态方法没有self参数,它需要使用@staticmethod修饰;
(2) 静态方法中需要以“类名.方法/属性名”的形式访问类的成员;
(3) 静态方法即可由对象调用,亦可直接由类调用。
定义一个包含属性num与静态方法static_method()的类Example,示例代码如下:
class Example:
num = 10 # 类属性
@staticmethod # 定义静态方法
def static_method():
print(f"类属性的值为:{Example.num}")
print("---静态方法")
创建Example类的对象example,使用对象example与类Example分别调用静态方法static_method(),示例代码如下:
example = Example() # 创建对象
example.static_method() # 对象可以调用
Example.static_method() # 类也可以调用
运行程序,结果如下所示:
类属性的值为:10
---静态方法
类属性的值为:10
---静态方法
从输出结果可以看出,类和对象均可以调用静态方法。
脚下留心:类方法和静态方法的区别
类方法和静态方法最主要的区别在于类方法有一个cls参数,使用该参数可以在类方法中访问类的成员;静态方法没有任何默认参数(如cls),它无法使用默认参数访问类的成员。因此,静态方法更适合与类无关的操作,例如一些工具类,用户只需要根据传入参数进行操作即可。