Lập trình hướng đối tượng (OOP) trong Python

Lập trình hướng đối tượng (OOP) là cách tổ chức code xoay quanh các “đối tượng” — kết hợp dữ liệu và hành vi. Python hỗ trợ OOP rất tự nhiên, và hiểu nó sẽ mở ra cánh cửa tới những dự án lớn hơn.

Class và object

Class là bản thiết kế; object là thực thể tạo ra từ bản thiết kế đó.

class ChoMeo:
    def __init__(self, ten, tuoi):
        self.ten = ten      # thuộc tính
        self.tuoi = tuoi

    def keu(self):          # phương thức
        return f"{self.ten} kêu meo meo"

miu = ChoMeo("Miu", 2)      # tạo object
print(miu.keu())            # Miu kêu meo meo

__init__ là hàm khởi tạo, chạy khi tạo object. self đại diện cho chính object đó.

Kế thừa (inheritance)

class DongVat:
    def __init__(self, ten):
        self.ten = ten
    def an(self):
        return f"{self.ten} đang ăn"

class Cho(DongVat):          # Cho kế thừa DongVat
    def sua(self):
        return f"{self.ten} sủa gâu gâu"

ki = Cho("Ki")
print(ki.an())    # kế thừa từ DongVat
print(ki.sua())   # phương thức riêng

Đóng gói (encapsulation)

Quy ước: thuộc tính bắt đầu bằng dấu gạch dưới _ được xem là “nội bộ”, không nên truy cập trực tiếp từ bên ngoài.

class TaiKhoan:
    def __init__(self):
        self._so_du = 0
    def nap(self, tien):
        if tien > 0:
            self._so_du += tien
    def xem_so_du(self):
        return self._so_du

Đa hình (polymorphism)

class Vuong:
    def dien_tich(self, canh):
        return canh * canh
class TronHinh:
    def dien_tich(self, ban_kinh):
        return 3.14 * ban_kinh ** 2

Nhiều class có cùng tên phương thức nhưng cách hoạt động khác nhau — đó là đa hình.

Khi nào dùng OOP?

OOP tỏa sáng khi bạn mô hình hóa những “thực thể” có trạng thái và hành vi (người dùng, sản phẩm, tài khoản…). Với script nhỏ, hàm đơn giản là đủ. Đừng lạm dụng OOP cho mọi thứ — hãy dùng khi nó thực sự giúp code rõ ràng hơn.

Lên đầu trang