0
0
Posts
MT
Minh Thao Uitminhthaouit

Tìm Hiểu Class Trong Python

Đăng vào 4 months ago

• 3 phút đọc

Chủ đề:

Python

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].

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 nameage 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

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)

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.

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.

Gợi ý câu hỏi phỏng vấn
entry

How to call base class constructor from child class in TypeScript?

entry

Bạn biết gì về ký hiệu big-O (big-O notation) và bạn có thể cho biết một số ví dụ liên quan đến các cấu trúc dữ liệu khác nhau?

entry

Danh sách liên kết có hiệu quả hơn mảng?

entry

Liệt kê các kiểu dữ liệu trong Python?

Bài viết cùng tác giả

Không có kết quả

Không có kết quả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào