PHP
Python

Trang chủ

Static method trong Python – Phân biệt hàm static method

Ngôn ngữ Python là một ngôn ngữ lập trình đa mục đích, nổi tiếng với cú pháp dễ đọc, dễ học và tính ứng dụng cao. Trong lĩnh vực phát triển web, Python thường được sử dụng thông qua các framework như Django và Flask để xây dựng các ứng dụng web mạnh mẽ, bảo mật và dễ mở rộng. Trong chuyên mục này, Vietnix không chỉ cung cấp kiến thức nền tảng về ngôn ngữ Python mà còn hướng dẫn chi tiết cách xây dựng các ứng dụng web thực tế, sử dụng các framework phổ biến và áp dụng các kỹ thuật tiên tiến. Vietnix cam kết liên tục cập nhật những bài viết mới nhất về các tính năng mới của Python, các thư viện hỗ trợ hữu ích và những phương pháp tốt nhất, giúp bạn khai thác tối đa sức mạnh của Python và hoàn thiện kỹ năng lập trình web của mình.
html
CSS
javascript
sql
python
php
c
c++
bootstrap
react
mysql
reactjs
vuejs
Javascript Tutorials
10/03/2025
12 phút đọc
Theo dõi Vietnix trên

Static method trong Python – Phân biệt hàm static method

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()@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.
Static method trong Python
Static method trong Python

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())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 hay cls, 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:

Cao Lê Viết Tiến

PHP Leader
tại
Vietnix

Kết nối với mình qua

Icon Quote
Icon Quote

Học lập trình online cùng vietnix

Học lập trình online cùng Vietnix

PHPXem thêmThu gọn