Saturday, February 28, 2026

Các method trong class

Chào bạn! Nếu bạn từng bối rối không biết khi nào nên dùng self, khi nào dùng @classmethod, hay tại sao có những hàm chẳng cần dùng gì cả, thì bài viết này dành cho bạn.

Trong Python, một Class không chỉ đơn thuần là "chứa" hàm. Nó chia các hàm (phương thức) thành 3 loại "anh em" với vai trò riêng biệt. Hãy cùng bóc tách chúng nhé!

Python Class Method vs. Static Method vs. Instance Method – PYnative 


1. Instance Method (Phương thức đối tượng) - "Kẻ làm thuê chăm chỉ"

Đây là loại phương thức phổ biến nhất. Nó gắn liền với một đối tượng cụ thể được tạo ra từ class.

  • Dấu hiệu nhận biết: Luôn có tham số đầu tiên là self.

  • Sức mạnh: Nó có thể truy cập và thay đổi dữ liệu riêng của từng đối tượng.

Python code:
 
class Burger:
    def __init__(self, name):
        self.name = name
    
    # Đây là Instance Method
    def introduce(self):
        print(f"Tôi là một chiếc Burger {self.name}!")

# Sử dụng
my_burger = Burger("Bò Phô Mai")
my_burger.introduce() 
 
Ghi nhớ: Dùng Instance Method khi bạn cần làm gì đó liên quan đến dữ liệu riêng 
của từng "đối tượng" (như tên, tuổi, màu sắc riêng).

2. Class Method (Phương thức lớp) - "Quản lý kho hàng"

Thay vì làm việc với từng đối tượng lẻ tẻ, Class Method làm việc với toàn bộ cái khuôn (Class).

  • Dấu hiệu nhận biết: Có decorator @classmethod ở trên và tham số đầu tiên là cls.

  • Sức mạnh: Thường dùng để thay đổi trạng thái chung của cả Class hoặc dùng để tạo ra các đối tượng theo cách đặc biệt (Factory Pattern).

Python code:
 
class Burger:
    price = 50  # Giá chung cho tất cả burger

    @classmethod
    def update_price(cls, new_price):
        cls.price = new_price
        print(f"Giá burger mới toàn hệ thống là: {cls.price}k")

# Sử dụng (Gọi trực tiếp từ tên Class, không cần tạo đối tượng)
Burger.update_price(60)

3. Static Method (Phương thức tĩnh) - "Người hàng xóm biết tuốt"

Static Method là những hàm nằm trong Class chứ thực chất nó chẳng liên quan gì đến dữ liệu của Class hay đối tượng cả.

  • Dấu hiệu nhận biết: Có decorator @staticmethodkhông có tham số self hay cls.

  • Sức mạnh: Dùng để chứa các hàm tiện ích (utility functions) có logic liên quan đến chủ đề của Class nhưng hoạt động độc lập.

Python code:
 
class Burger:
    @staticmethod
    def check_health_tip(is_veggie):
        if is_veggie:
            return "Lựa chọn tốt cho sức khỏe!"
        return "Ngon nhưng đừng ăn quá nhiều nhé!"

# Sử dụng
print(Burger.check_health_tip(True))

Bảng so sánh nhanh

Đặc điểmInstance MethodClass MethodStatic Method
Tham số mặc địnhself (đối tượng)cls (lớp)Không có
Truy cập InstanceKhôngKhông
Truy cập ClassKhông
Mục đích chínhThay đổi thuộc tính đối tượngThay đổi thuộc tính lớpHàm tiện ích bổ trợ

Tổng kết:

  1. Dùng Instance Method nếu bạn muốn điều khiển "từng cá thể".

  2. Dùng Class Method nếu bạn muốn điều khiển "cả loài".

  3. Dùng Static Method nếu bạn chỉ muốn để một cái hàm vào Class cho gọn gàng, dễ quản lý.

No comments:

Post a Comment