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

靜態方法的優點

使用靜態方法有幾個優點,包括 −

  • 由於靜態方法無法訪問類屬性,因此它可以用作實用程式函式來執行經常重複使用的任務。
  • 我們可以使用類名來呼叫此方法。因此,它消除了對例項的依賴。
  • 靜態方法始終是可預測的,因為無論類狀態如何,其行為都保持不變。
  • 我們可以將方法宣告為靜態方法以防止覆蓋。
廣告