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.
Có hai cách để tạo phương thức tĩnh trong Python −
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.
staticmethod(method)
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
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.
@staticmethod def method_name(): # your code
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
Có một số lợi ích khi sử dụng phương thức tĩnh, bao gồm −