在 Python 中,静态方法是一种不需要任何实例即可调用的方法。它与类方法非常相似,但不同之处在于静态方法没有像 self
(对象引用)或 cls
(类引用)这样的强制参数。
静态方法用于访问给定类的静态字段。由于它们是绑定到类而不是实例的,因此它们不能修改类的状态。
如何在 Python 中创建静态方法?
有两种方式来创建 Python 静态方法:
使用 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
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
使用 @staticmethod
装饰器
创建静态方法的第二种方式是使用 Python 的 @staticmethod
装饰器。当我们使用这个装饰器修饰一个方法时,它告诉解释器指定的方法是一个静态方法。
语法
@staticmethod
def method_name():
示例
在下面的例子中,我们使用 @staticmethod
装饰器创建了一个静态方法。
class Student:
stdCount = 0
def __init__(self, name, age):
self.__name = name
self.__age = age
Student.stdCount += 1
@staticmethod
def showcount():
print(Student.stdCount)
e1 = Student("Bhavana", 24)
e2 = Student("Rajesh", 26)
e3 = Student("John", 27)
print("学生人数:")
Student.showcount()
运行上述代码将打印以下结果:
学生人数:
3
静态方法的优势
使用静态方法有几个优点,包括但不限于:
-
由于静态方法不能访问类属性,因此它可以作为执行频繁重复任务的工具函数。
-
我们可以使用类名来调用此方法。因此,它消除了对实例的依赖性。
-
静态方法总是可预测的,因为无论类的状态如何,它的行为都不会改变。
-