Python - Static Methods

What is Python Static Method?

Trong Python, một static method là một loại phương thức không yêu cầu bất kỳ thể hiện nào để được gọi. Nó rất giống với phương thức lớp, nhưng sự khác biệt là phương thức tĩnh không có tham số bắt buộc như tham chiếu đến đối tượng − self hoặc tham chiếu đến lớp − cls .

Các phương thức tĩnh được sử dụng để truy cập các trường tĩnh của một lớp nhất định. Chúng không thể thay đổi trạng thái của một lớp vì chúng gắn liền với lớp, không phải với thể hiện.

How to Create Static Method in Python?

Có hai cách để tạo phương thức tĩnh trong Python −

  • Using staticmethod() Function
  • Using @staticmethod Decorator

Using staticmethod() Function

Hàm thư viện chuẩn của Python có tên là `staticmethod()` được sử dụng để tạo một phương thức tĩnh. Nó nhận một phương thức làm tham số và chuyển đổi nó thành một phương thức tĩnh.

Syntax

staticmethod(method)

Example

Trong lớp Employee dưới đây, phương thức showcount() đã được chuyển đổi thành một phương thức tĩnh. Phương thức tĩnh này bây giờ có thể được gọi bởi đối tượng của nó hoặc tham chiếu của chính lớp.

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()

Thực thi đoạn mã trên sẽ in ra kết quả sau −

3
3

Using @staticmethod Decorator

Cách thứ hai để tạo một phương thức tĩnh là sử dụng bộ trang trí @staticmethod của Python. Khi chúng ta sử dụng bộ trang trí này với một phương thức, nó chỉ ra cho Trình thông dịch rằng phương thức được chỉ định là tĩnh.

Syntax

@staticmethod
def method_name():
   # your code

Example

Trong ví dụ dưới đây, chúng ta đang tạo một phương thức tĩnh bằng cách sử dụng trình trang trí @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()

Chạy đoạn mã trên sẽ in ra kết quả sau −

Number of Students:
3

Advantages of Static Method

Có một số lợi ích khi sử dụng phương thức tĩnh, bao gồm −

  • Since a static method cannot access class attributes, it can be used as a utility function to perform frequently re-used tasks.
  • We can invoke this method using the class name. Hence, it eliminates the dependency on the instances.
  • A static method is always predictable as its behavior remain unchanged regardless of the class state.
  • We can declare a method as a static method to prevent overriding.