Lập Trình Hướng Đối Tượng (OOP): Class Và Object Cơ Bản Trong Python

Trước khi tiếp cận Lập trình hướng đối tượng (OOP), chúng ta thường viết chương trình theo phong cách hướng thủ tục (procedural programming) – tổ chức code xung quanh các hàm và tập lệnh xử lý tuần tự. Tuy nhiên, khi ứng dụng mở rộng, việc quản lý dữ liệu và logic riêng lẻ trở nên phức tạp. Lập trình hướng đối tượng ra đời nhằm giúp giải quyết bài toán này bằng cách mô hình hóa các đối tượng trong thực tế vào trong mã nguồn.

Hình minh họa khái niệm Class và Object trong lập trình hướng đối tượng Python
Ảnh minh họa: Lập trình hướng đối tượng là gì? | Object Oriented Programming - OOP

1. Lập Trình Hướng Đối Tượng (OOP) Là Gì?

Lập trình hướng đối tượng (Object-Oriented Programming - OOP) là một phương pháp luận lập trình dựa trên khái niệm các "đối tượng". Mỗi đối tượng chứa dữ liệu dưới dạng các thuộc tính (attributes) và mã nguồn dưới dạng các phương thức (methods).

OOP mang lại nhiều lợi ích quan trọng:

  • Tái sử dụng mã nguồn: Giảm thiểu việc lặp lại code theo nguyên lý DRY (Don't Repeat Yourself).
  • Dễ bảo trì và mở rộng: Quản lý chương trình theo các khối độc lập giúp dễ dàng tìm lỗi và nâng cấp.
  • Trừu tượng hóa thực tế: Giúp mô phỏng các đối tượng thực tế (như người dùng, tài khoản ngân hàng, sản phẩm) vào lập trình một cách tự nhiên.

2. Khái Niệm Lớp (Class) Và Đối Tượng (Object)

Để làm việc với OOP, bạn cần hiểu rõ sự khác biệt giữa Class và Object:

  • Lớp (Class): Là một bản thiết kế hoặc khuôn mẫu (blueprint) định nghĩa các đặc tính và hành vi chung. Bản thân Class chưa tồn tại như một dữ liệu cụ thể trong bộ nhớ khi chương trình chạy.
  • Đối tượng (Object): Là một thực thể (instance) cụ thể được tạo ra từ Class. Mỗi Object sở hữu dữ liệu riêng biệt nhưng tuân theo cấu trúc mà Class định nghĩa.

Ví dụ thực tế: Class giống như bản vẽ thiết kế của một ngôi nhà, còn Object chính là ngôi nhà thực sự được xây dựng từ bản vẽ đó.

3. Cú Pháp Khai Báo Class Và Khởi Tạo Object Trong Python

Trong Python, bạn sử dụng từ khóa class để định nghĩa một lớp. Theo quy ước, tên class thường viết theo kiểu CamelCase (chữ cái đầu mỗi từ viết hoa).

class Dog: # Định nghĩa một lớp có tên là Dog pass # Tạo đối tượng (instance) từ lớp Dog my_dog = Dog() print(my_dog) 

Hàm khởi tạo __init__ và tham số self

Hàm __init__() là một phương thức đặc biệt (gọi là constructor) tự động chạy khi một đối tượng mới được tạo ra. Nó thường dùng để gán giá trị cho các thuộc tính của đối tượng.

Tham số self đại diện cho chính đối tượng hiện tại đang được thao tác. Python dùng self để liên kết các thuộc tính và phương thức với đối tượng đó.

class Student: # Hàm khởi tạo định nghĩa các thuộc tính def __init__(self, name, age): self.name = name # Thuộc tính tên self.age = age # Thuộc tính tuổi # Khởi tạo các đối tượng sinh viên student1 = Student("Nguyen Van A", 20) student2 = Student("Tran Thi B", 21) # Truy cập thuộc tính của từng đối tượng print(student1.name) # Output: Nguyen Van A print(student2.age) # Output: 21 

4. Khai Báo Phương Thức (Methods) Trong Class

Phương thức là các hàm được định nghĩa bên trong một Class để thực hiện hành động liên quan đến đối tượng đó. Mọi phương thức thông thường của một đối tượng đều cần nhận self làm tham số đầu tiên.

class Car: def __init__(self, brand, model): self.brand = brand self.model = model # Phương thức hiển thị thông tin def display_info(self): return f"Xe: {self.brand} - Dòng xe: {self.model}" # Phương thức mô phỏng hành động def drive(self): print(f"{self.brand} {self.model} đang chạy...") # Khởi tạo đối tượng và gọi phương thức my_car = Car("Toyota", "Camry") print(my_car.display_info()) # Output: Xe: Toyota - Dòng xe: Camry my_car.drive() # Output: Toyota Camry đang chạy... 

5. Phân Biệt Instance Variable Và Class Variable

Trong Python, thuộc tính của lớp có thể chia làm hai loại chính:

  • Instance Variable (Biến đối tượng): Được định nghĩa bên trong phương thức (thường là __init__) với tiền tố self.. Giá trị của nó là riêng biệt cho từng đối tượng.
  • Class Variable (Biến lớp): Được định nghĩa trực tiếp bên trong Class nhưng nằm ngoài các phương thức. Giá trị này được chia sẻ chung cho tất cả các đối tượng được tạo ra từ Class đó.
class Circle: pi = 3.14159 # Class Variable (dùng chung cho mọi hình tròn) def __init__(self, radius): self.radius = radius # Instance Variable (bán kính riêng của từng hình tròn) def area(self): return Circle.pi * (self.radius ** 2) c1 = Circle(5) c2 = Circle(10) print(c1.area()) # Output: 78.53975 print(c2.area()) # Output: 314.159 

Kết Luận

Lập trình hướng đối tượng (OOP) giúp cấu trúc mã nguồn trở nên gọn gàng, dễ quản lý và mở rộng hơn. Việc nắm vững khái niệm Lớp (Class), Đối tượng (Object), thuộc tính và phương thức là nền tảng cốt lõi để bạn tiếp cận các kỹ thuật nâng cao hơn trong lập trình Python.


Nguồn tham khảo


📚 Chuỗi bài: Lộ Trình Học Python Toàn Diện: Từ Con Số 0 Đến Ứng Dụng Thực Tế

Chuỗi 20 bài viết hướng dẫn lập trình Python theo lộ trình bài bản, giúp người mới bắt đầu nắm vững cú pháp nền tảng, tư duy lập trình hướng đối tượng, làm việc với dữ liệu và xây dựng ứng dụng thực tế.

  1. 1. Lộ Trình Python #1: Cài Đặt Môi Trường Và Viết Chương Trình Đầu Tiên
  2. 2. Lộ Trình Python #2: Biến Và Kiểu Dữ Liệu Cơ Bản Trong Python
  3. 3. Các Toán Tử Trong Python Và Cách Sử Dụng Chi Tiết
  4. 4. Cấu Trúc Điều Kiện If-Else Và Tư Duy Cấu Trúc Rẽ Nhánh Trong Python
  5. 5. Vòng Lặp For Và While Trong Python: Tối Ưu Hóa Việc Lặp Lại Công Việc
  6. 6. Xử Lý Chuỗi (String) Tối Ưu Trong Python
  7. 7. Làm Chủ Cấu Trúc Dữ Liệu List Và Tuple Trong Python
  8. 8. Quản Lý Dữ Liệu Với Dictionary Và Set Trong Python
  9. 9. Xây Dựng Hàm (Function) Và Quản Lý Phạm Vi Biến Trong Python
  10. 10. Xử Lý Lỗi Và Ngoại Lệ Với Try-Except Trong Python
  11. 11. Thao Tác Đọc Và Ghi File Trong Python: Hướng Dẫn Chi Tiết Từ A Đến Z
  12. 12. Quản Lý Module Và Package Trong Python: Từ Chia Nhỏ Mã Nguồn Đến Sử Dụng Pip
  13. 13. Lập Trình Hướng Đối Tượng (OOP): Class Và Object Cơ Bản Trong Python ← Bạn đang đọc
  14. 14. Bốn Trụ Cột Cơ Bản Của OOP Trong Python: Đóng Gói, Kế Thừa, Đa Hình Và Trừu Tượng Hóa
  15. 15. Xử Lý Ngày Tháng Và Thời Gian Với Module Datetime Trong Python
  16. 16. Làm Việc Với Dữ Liệu Định Dạng JSON Vượt Trội Trong Python
  17. 17. Cơ Bản Về Crawl Dữ Liệu Web Với BeautifulSoup
  18. 18. Xử Lý Dữ Liệu Bảng Cơ Bản Với Pandas
  19. 19. Xây Dựng RESTful API Đơn Giản Với Flask
  20. 20. Dự Án Cuối Khóa: Tự Động Hóa Công Việc Hàng Ngày Với Python

← Bài trước: Quản Lý Module Và Package Trong Python: Từ Chia Nhỏ Mã Nguồn Đến Sử Dụng Pip Bài tiếp theo: Bốn Trụ Cột Cơ Bản Của OOP Trong Python: Đóng Gói, Kế Thừa, Đa Hình Và Trừu Tượng Hóa →

Nhận xét