Python là một ngôn ngữ lập trình hướng đối tượng mạnh mẽ, và một trong những khái niệm cơ bản nhất trong lập trình hướng đối tượng (OOP) là class. Class trong Python không chỉ giúp lập trình viên tổ chức mã nguồn một cách hiệu quả mà còn cung cấp các phương tiện để kết hợp dữ liệu và chức năng một cách logic. Trong bài viết này, chúng ta sẽ khám phá chi tiết về class trong Python, cách khai báo, sử dụng và các tính năng nâng cao liên quan đến class.
Khái Niệm Class
Class là một "bản thiết kế" hoặc "nguyên mẫu" cho các đối tượng mà từ đó các đối tượng (instances) được tạo ra. Mỗi đối tượng là một thực thể của class và có thể có thuộc tính riêng biệt nhưng chia sẻ cùng một cấu trúc định nghĩa trong class
Cách Khai Báo Class
Để khai báo một class trong Python, bạn sử dụng từ khóa class theo sau là tên class và dấu hai chấm. Phần thân của class chứa các định nghĩa thuộc tính (attributes) và phương thức (methods) của nó[1][2][4].
            
            
              python
              
              
              
            
          
          class Person:
    # Thuộc tính của class
    species = 'Human'
    # Phương thức khởi tạo
    def __init__(self, name, age):
        self.name = name
        self.age = age
    # Phương thức khác
    def greet(self):
        return f"Hello, my name is {self.name} and I am {self.age} years old."
        Trong ví dụ trên, Person là một class với thuộc tính species và hai phương thức là __init__() (hàm khởi tạo) và greet(). Thuộc tính species là một thuộc tính của class, trong khi name và age là các thuộc tính của instance được khởi tạo thông qua phương thức __init__.
Tạo Đối Tượng Từ Class
Sau khi đã định nghĩa class, bạn có thể tạo các đối tượng (instances) từ class đó. Mỗi đối tượng sẽ kế thừa tất cả thuộc tính và phương thức của class
            
            
              python
              
              
              
            
          
          person1 = Person("John", 30)
person2 = Person("Alice", 25)
print(person1.greet())  # Hello, my name is John and I am 30 years old.
print(person2.greet())  # Hello, my name is Alice and I am 25 years old.
        Kế Thừa Trong Python
Kế thừa là một tính năng quan trọng của OOP, cho phép một class mới kế thừa các thuộc tính và phương thức của một class đã có. Class mới này được gọi là class con (subclass), và class đã có là class cha (superclass)
            
            
              python
              
              
              
            
          
          class Student(Person):
    def __init__(self, name, age, student_id):
        super().__init__(name, age)
        self.student_id = student_id
    def study(self):
        return f"{self.name} is studying."
student = Student("Bob", 20, "S1001")
print(student.greet())  # Hello, my name is Bob and I am 20 years old.
print(student.study())  # Bob is studying.
        Trong ví dụ trên, Student là một subclass của Person. Nó kế thừa các thuộc tính và phương thức của Person và thêm thuộc tính student_id cùng phương thức study().
Tính Đóng Gói
Tính đóng gói trong Python được thực hiện thông qua việc sử dụng các thuộc tính và phương thức riêng tư (private) bằng cách thêm hai dấu gạch dưới (__) trước tên. Điều này giúp hạn chế truy cập trực tiếp từ bên ngoài class.
            
            
              python
              
              
              
            
          
          class Account:
    def __init__(self, owner, amount):
        self.owner = owner
        self.__amount = amount  # Thuộc tính riêng tư
    def deposit(self, amount):
        if amount > 0:
            self.__amount += amount
            return "Deposit successful"
        else:
            return "Invalid amount"
account = Account("John", 100)
print(account.deposit(50))  # Deposit successful
# print(account.__amount)  # Lỗi: 'Account' object has no attribute '__amount'
        Kết Luận
Class trong Python là một công cụ mạnh mẽ cho phép lập trình viên tổ chức và quản lý mã nguồn một cách hiệu quả, đồng thời cung cấp khả năng tái sử dụng và mở rộng mã. Với các tính năng như kế thừa và đóng gói, Python hỗ trợ lập trình viên xây dựng các ứng dụng phức tạp một cách dễ dàng hơn.
source: viblo