Python - 静态方法



什么是 Python 静态方法?

在 Python 中,静态方法是一种不需要任何实例即可调用的方法类型。它与类方法非常相似,但区别在于静态方法没有强制参数,例如对对象的引用− self 或对类的引用− cls

静态方法用于访问给定类的静态字段。由于它们绑定到类而不是实例,因此它们不能修改类的状态。

如何在 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 装饰器。当我们将此装饰器与方法一起使用时,它表示给解释器指定的方法是静态的。

语法

@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

静态方法的优点

使用静态方法有几个优点,包括 −

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