Python - 静态方法



什么是 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

使用 @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

静态方法的优点

使用静态方法有几个优点,其中包括 -

  • 由于静态方法无法访问类属性,因此它可以用作实用程序函数来执行经常重用的任务。
  • 我们可以使用类名调用此方法。因此,它消除了对实例的依赖。
  • 静态方法始终是可预测的,因为无论类状态如何,其行为都保持不变。
  • 我们可以将方法声明为静态方法以防止重写。