Static method là một phương thức trong Python thuộc về class nhưng không yêu cầu instance để gọi. Nó không thể truy cập hoặc thay đổi trạng thái của class, giúp mã nguồn gọn gàng và dễ bảo trì. Trong bài viết này, bạn sẽ tìm hiểu cách tạo static method bằng staticmethod() và @staticmethod, cùng với những lợi ích mà nó mang lại.
Điểm chính cần nắm
- Static method trong Python là gì: Static method là phương thức thuộc về class, không yêu cầu instance để gọi, giúp mã nguồn gọn gàng và dễ bảo trì.
- Cách tạo static method trong Python: Có hai cách để tạo static method là dùng hàm staticmethod() hoặc decorator @staticmethod.
- Lợi ích của static method: Giúp mã nguồn rõ ràng, tăng hiệu suất, không làm thay đổi trạng thái class, hỗ trợ tái sử dụng và ngăn chặn ghi đè trong kế thừa.
- Vietnix – Giải pháp lưu trữ tốc độ cao, bảo mật toàn diện cho doanh nghiệp: Cung cấp dịch vụ server, hosting, VPS chất lượng cao, đảm bảo tốc độ, bảo mật và hỗ trợ kỹ thuật 24/7.
Static method trong Python là gì?
Static method (phương thức tĩnh) trong Python là một phương thức thuộc về class nhưng không yêu cầu instance của class để gọi. Không giống như instance method (tham số self
) hay class method (tham số cls
), static method không có đối số bắt buộc nào liên quan đến class hay instance.
Đặc điểm của Static Method
- Không truy cập hoặc thay đổi các thuộc tính của class.
- Thường dùng để tạo các hàm tiện ích (utility functions) liên quan đến class nhưng không phụ thuộc vào dữ liệu của class.
- Có thể gọi trực tiếp từ class hoặc thông qua instance.

Cách tạo static method trong Python
Để tạo static method trong Python, bạn có thể sử dụng staticmethod()
hoặc @staticmethod
decorator. Cả hai cách đều giúp định nghĩa một phương thức tĩnh mà không yêu cầu self
hay cls
. Dưới đây là cách thực hiện chi tiết:
Dùng hàm staticmethod()
Trong Python, bạn có thể sử dụng hàm staticmethod()
để chuyển một phương thức bình thường thành static method. Khi đó, phương thức này có thể được gọi trực tiếp từ class mà không cần tạo instance.
Cú pháp:
staticmethod(method)
Ví dụ:
Trong lớp VietnixServer
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 này có thể được gọi bằng cách sử dụng đối tượng hoặc trực tiếp từ class.
class VietnixServer:
server_count = 0
def __init__(self, name, config):
self.__name = name
self.__config = config
VietnixServer.server_count += 1
# Tạo static method
def showcount():
print(VietnixServer.server_count)
return
counter = staticmethod(showcount)
# Tạo các server
s1 = VietnixServer("Server 1", "Xeon, 32GB RAM")
s2 = VietnixServer("Server 2", "EPYC, 64GB RAM")
s3 = VietnixServer("Server 3", "Xeon, 128GB RAM")
# Gọi phương thức tĩnh
s1.counter()
VietnixServer.counter()
Kết quả:
3
3
Trong ví dụ này, showcount()
là một phương thức tĩnh, có thể gọi từ cả instance (s1.counter()
) và class (VietnixServer.counter()
) mà không cần self
hay cls
.
Dùng decorator @staticmethod
Trong Python, bạn có thể sử dụng decorator @staticmethod
để định nghĩa một static method trực tiếp trong class mà không cần sử dụng staticmethod()
. Cách này giúp mã nguồn gọn gàng hơn, dễ đọc và thể hiện rõ ràng rằng phương thức không phụ thuộc vào instance hay class.
Cú pháp:
@staticmethod
def method_name():
# code xử lý
Ví dụ:
Trong ví dụ sau, chúng ta tạo một phương thức tĩnh trong class VietnixServer
để hiển thị số lượng server đã được khởi tạo.
class VietnixServer:
server_count = 0
def __init__(self, name, config):
self.__name = name
self.__config = config
VietnixServer.server_count += 1
# Tạo static method
@staticmethod
def showcount():
print("Số lượng server hiện tại:", VietnixServer.server_count)
# Tạo các server
s1 = VietnixServer("Server 1", "Xeon, 32GB RAM")
s2 = VietnixServer("Server 2", "EPYC, 64GB RAM")
s3 = VietnixServer("Server 3", "Xeon, 128GB RAM")
# Gọi phương thức tĩnh
print("Thông tin hệ thống Vietnix:")
VietnixServer.showcount()
Kết quả:
Thông tin hệ thống Vietnix:
Số lượng server hiện tại: 3
Trong ví dụ này, showcount()
là một static method, có thể gọi trực tiếp từ class (VietnixServer.showcount()
). Vì không có self
hoặc cls
, phương thức này chỉ đọc dữ liệu từ class mà không thể thay đổi trạng thái của nó.
Lợi ích của static method
Việc sử dụng static method trong Python mang lại nhiều lợi ích, đặc biệt khi cần các phương thức không phụ thuộc vào trạng thái của class hay instance. Dưới đây là một số ưu điểm chính:
- Giúp mã nguồn gọn gàng: Không cần
self
haycls
, giúp phương thức dễ đọc và rõ ràng hơn. - Tạo các hàm tiện ích: Dùng để xử lý logic chung như tính toán, kiểm tra dữ liệu mà không cần truy cập instance.
- Không ảnh hưởng đến trạng thái class: Static method không thể thay đổi thuộc tính của class, giúp giữ dữ liệu ổn định.
- Có thể gọi trực tiếp từ class: Giúp tiết kiệm bộ nhớ và tối ưu hiệu suất khi không cần tạo instance để gọi phương thức.
- Ngăn chặn ghi đè trong kế thừa: Nếu không muốn phương thức bị override, có thể sử dụng
@staticmethod
. - Tăng tính module hóa: Giúp mã dễ bảo trì, tách biệt logic và dễ dàng tái sử dụng ở nhiều nơi.
- Dùng như một hàm tiện ích: Do không truy cập thuộc tính của class, static method phù hợp để thực hiện các tác vụ thường xuyên được tái sử dụng.
- Loại bỏ sự phụ thuộc vào instance: Phương thức có thể được gọi trực tiếp bằng tên class, không cần tạo đối tượng.
- Luôn có hành vi nhất quán: Static method không bị ảnh hưởng bởi trạng thái của class, giúp đảm bảo tính nhất quán trong quá trình thực thi.
Vietnix – Giải pháp lưu trữ tốc độ cao, bảo mật toàn diện cho doanh nghiệp
Vietnix tự hào là nhà cung cấp dịch vụ thuê máy chủ (server), hosting, VPS, domain uy tín tại Việt Nam, mang đến giải pháp hạ tầng công nghệ mạnh mẽ, giúp doanh nghiệp tối ưu hiệu suất và đảm bảo an toàn dữ liệu. Với hơn 80.000 khách hàng tin tưởng, Vietnix không ngừng nâng cấp hệ thống, cung cấp dịch vụ chất lượng cao cùng đội ngũ hỗ trợ kỹ thuật 24/7, sẵn sàng đồng hành và giải quyết mọi vấn đề nhanh chóng.
Thông tin liên hệ:
- Website: https://vietnix.vn/
- Hotline: 18001093
- Email: sales@vietnix.com.vn
- Địa chỉ: 265 Hồng Lạc, Phường 10, Quận Tân Bình, Thành Phố Hồ Chí Minh.
Câu hỏi thường gặp
Static method trong Python khác gì so với class method?
Static method và class method đều có thể được gọi từ class thay vì instance, nhưng có một điểm khác biệt quan trọng. Class method sử dụng tham số cls
, cho phép truy cập và thay đổi thuộc tính của class. Trong khi đó, static method không có tham số self
hay cls
, nghĩa là nó không thể truy cập hoặc thay đổi trạng thái của class. Static method chỉ hoạt động như một hàm độc lập nhưng vẫn thuộc về class.
Khi nào nên sử dụng static method trong Python?
Static method thích hợp khi cần một phương thức không phụ thuộc vào trạng thái của class hay instance. Chúng thường được dùng để tạo các hàm tiện ích như xử lý dữ liệu, kiểm tra đầu vào hoặc tính toán mà không cần truy cập vào bất kỳ thuộc tính nào của class. Điều này giúp giữ code gọn gàng và dễ bảo trì hơn.
Static method có thể truy cập biến class không?
Không, static method không có quyền truy cập trực tiếp vào các biến của class, vì nó không nhận self
hay cls
. Nếu cần truy cập thuộc tính class, bạn phải truyền class vào như một tham số hoặc sử dụng class method thay thế.
Static method có thể được kế thừa không?
Có, static method có thể được kế thừa trong class con, nhưng vì nó không có self
hay cls
, nên nó không thể bị override theo cách thông thường. Nếu cần thay đổi hành vi trong class con, bạn có thể định nghĩa lại static method với cùng tên nhưng logic khác.
Nên dùng static method hay function thông thường?
Nếu phương thức có liên quan đến class nhưng không cần truy cập trạng thái của nó, bạn nên sử dụng static method để tổ chức code tốt hơn. Nếu phương thức không liên quan đến class và có thể đặt bên ngoài, thì nên dùng function thông thường để tránh phụ thuộc không cần thiết.
Có thể gọi static method bằng instance không?
Có, bạn có thể gọi static method bằng instance, nhưng cách này không phổ biến. Tốt nhất là gọi trực tiếp từ class để giữ code rõ ràng hơn và tránh nhầm lẫn về bản chất của static method.
Static method có giúp tối ưu hiệu suất không?
Có, vì static method không yêu cầu instance, nó giúp giảm tiêu tốn bộ nhớ và tăng tốc độ thực thi. Việc sử dụng static method giúp loại bỏ sự phụ thuộc vào instance, từ đó tối ưu hiệu suất khi xử lý các tác vụ lặp lại hoặc các hàm tiện ích.
Lời kết
Static method là một công cụ hữu ích khi bạn cần tạo các hàm tiện ích không phụ thuộc vào dữ liệu của class. Bằng cách sử dụng staticmethod() hoặc @staticmethod, bạn có thể tối ưu hóa mã nguồn, tăng hiệu suất và đảm bảo tính ổn định cho chương trình. Nếu bạn có bất cứ thắc mắc hay cần hỗ trợ gì, hãy để lại bình luận bên dưới, mình sẽ phản hồi nhanh nhất. Cảm ơn bạn đã đọc!
Mọi người cũng xem: