什么是 Python 静态方法?
在 Python 中,静态方法是一种不需要调用任何实例的方法。它与 class 方法非常相似,但区别在于 static 方法没有强制性参数,例如对对象的引用 − self 或对类的引用 − cls。
static 方法用于访问给定类的 static 字段。它们无法修改类的状态,因为它们绑定到类,而不是实例。
如何在 Python 中创建静态方法?
有两种方法可以创建 Python 静态方法 -
- 使用 staticmethod() 函数
- 使用 @staticmethod 装饰器
使用 staticmethod() 函数
Python 的标准库函数 staticmethod() 用于创建静态方法。它接受方法作为参数,并将其转换为静态方法。
语法
staticmethod(method)
例
在下面的 Employee 类中,showcount() 方法将转换为静态方法。此静态方法现在可以由其对象或类本身的引用调用。
class Employee:
empCount = 0
def __init__(self, name, age):
self.__name = name
self.__age = age
Employee.empCount += 1
# creating staticmethod
def showcount():
print (Employee.empCount)
return
counter = staticmethod(showcount)
e1 = Employee("Bhavana", 24)
e2 = Employee("Rajesh", 26)
e3 = Employee("John", 27)
e1.counter()
Employee.counter()
执行上述代码将打印以下结果 -
3
3
3
使用 @staticmethod 装饰器
创建静态方法的第二种方法是使用 Python @staticmethod 装饰器。当我们将这个装饰器与一个方法一起使用时,它向 Interpreter 表明指定的方法是静态的。
语法
@staticmethod
def method_name():
# your code
例
在以下示例中,我们将使用 @staticmethod 装饰器创建一个静态方法。
class Student:
stdCount = 0
def __init__(self, name, age):
self.__name = name
self.__age = age
Student.stdCount += 1
# creating staticmethod
@staticmethod
def showcount():
print (Student.stdCount)
e1 = Student("Bhavana", 24)
e2 = Student("Rajesh", 26)
e3 = Student("John", 27)
print("Number of Students:")
Student.showcount()
运行上述代码将打印以下结果 -
Number of Students:
3
3
静态方法的优点
使用静态方法有几个优点,其中包括 -
- 由于静态方法无法访问类属性,因此它可以用作实用程序函数来执行经常重用的任务。
- 我们可以使用类名调用此方法。因此,它消除了对实例的依赖。
- 静态方法始终是可预测的,因为无论类状态如何,其行为都保持不变。
- 我们可以将方法声明为静态方法以防止重写。