Trang chủThủ thuậtỨng dụngPhần mềm
Làm quen với class trong Python từ A đến Z cho người mới
Làm quen với class trong Python từ A đến Z cho người mới

Làm quen với class trong Python từ A đến Z cho người mới

Làm quen với class trong Python từ A đến Z cho người mới

Mỹ Linh , Tác giả Sforum - Trang tin công nghệ mới nhất
Mỹ Linh
Ngày đăng: 21/05/2025-Cập nhật: 21/05/2025
gg news

Class trong Python là gì mà khiến nhiều người học lập trình phải tò mò ngay từ những dòng code đầu tiên? Nếu khái niệm “lập trình hướng đối tượng” còn mơ hồ với bạn, giờ là thời điểm để làm sáng tỏ. Hãy cùng Sforum tham khảo khái niệm nền tảng cho đến bài tập về tạo class trong Python, giúp bạn nắm vững từ gốc đến ngọn.

Class trong Python là gì?

Class trong Python là một khung mẫu độc đáo, hoạt động như bản vẽ kỹ thuật để sinh ra các đối tượng. Nó cho phép bạn định nghĩa một tập hợp các thuộc tính (dữ liệu) và phương thức (hành vi) mà các đối tượng được tạo từ class đó sẽ sở hữu.

Cấu trúc class trong Python
Cấu trúc class trong Python

Nói cách khác, class giống như một khuôn mẫu, giúp bạn tổ chức và tái sử dụng mã nguồn một cách logic và hiệu quả. Ví dụ, nếu bạn muốn mô tả một chiếc ô tô, class sẽ định nghĩa các đặc điểm như màu sắc, tốc độ, và các hành động như di chuyển hay dừng lại.

Cú pháp khai báo class

Việc tạo class trong Python được thực hiện thông qua một cú pháp đặc trưng với từ khóa class, theo sau là tên bạn chọn cho lớp và kết thúc dòng đó bằng dấu hai chấm (:). Bên trong phần thụt đầu dòng của lớp, bạn sẽ xác định những gì lớp đó có thể làm (hành vi) và những thông tin nó nắm giữ (thuộc tính).

Cú pháp khai báo class

Ví dụ:

class ChimCanhCut:

   def __init__(self, loai, mau_long):

      self.loai = loai

      self.mau_long = mau_long

   def hot(self):

       return f"Con {self.loai} có lông màu {self.mau_long} đang hót líu lo!"

chim = ChimCanhCut("sẻ", "nâu")

print(chim.hot())

Sau khi biết cú pháp tạo class trong Python, bạn cũng cần rèn luyện để củng cố kỹ năng và nhớ lâu. Hãy bắt đầu với một chiếc laptop cấu hình mạnh mẽ sau và tạo ra những hệ thống mã độc đáo, biến ý tưởng thành hiện thực!

[Product_Listing categoryid="380" propertyid="" customlink="https://cellphones.com.vn/laptop.html" title="Danh sách Laptop đang được quan tâm nhiều tại CellphoneS"]

Các thành phần chính của class

Class trong Python là một công cụ mạnh mẽ, giống như một bản vẽ chi tiết để tạo ra các đối tượng với đặc điểm và hành vi riêng. Trước khi khám phá các thành phần cốt lõi của class, cũng chính là yếu tố để bạn tận dụng sức mạnh của class.

Thuộc tính (Attributes)

Khi tạo class trong Python, một trong những thành phần cốt lõi là thuộc tính (attributes). Thuộc tính giống như những đặc điểm riêng biệt của một đối tượng, được dùng để lưu trữ dữ liệu đặc trưng. Có hai loại thuộc tính chính: thuộc tính instance (riêng cho từng đối tượng) và thuộc tính class (chung cho tất cả đối tượng của class).

Các thành phần chính của class 1
Thuộc tính (Attributes) của class trong Python

Ví dụ:

class CayCoi:

loai_cay = "cây xanh"

def __init__(self, ten, chieu_cao):

     self.ten = ten

     self.chieu_cao = chieu_cao

def mo_ta(self):

    return f"{self.ten} là {self.loai_cay}, cao {self.chieu_cao}m"

cay1 = CayCoi("phượng", 5)

print(cay1.mo_ta())

print(CayCoi.loai_cay)

Phương thức (Methods)

Khi tạo class trong Python, phương thức (methods) là một thành phần quan trọng, đóng vai trò như các hành vi hoặc chức năng mà đối tượng có thể thực hiện. Phương thức là các hàm được định nghĩa bên trong class, thường nhận tham số self để truy cập thuộc tính và dữ liệu của đối tượng.

Chúng cho phép đối tượng tương tác, xử lý thông tin hoặc thực hiện các tác vụ cụ thể. Có ba loại phương thức chính:

Phương thức instance: Hoạt động trên đối tượng cụ thể, sử dụng self.

Phương thức class: Hoạt động trên class, dùng decorator @classmethod và tham số cls.

Phương thức static: Không phụ thuộc vào đối tượng hay class, dùng decorator @staticmethod.

Các thành phần chính của class 2

Ví dụ:

class DongVat:

loai = "động vật"

def __init__(self, ten):

   self.ten = ten

def keu(self):

   return f"{self.ten} đang kêu!"

@classmethod

def mo_ta_loai(cls):

   return f"Đây là {cls.loai}"

@staticmethod

def thong_tin():

   return "Động vật sống trên Trái Đất."

con_meo = DongVat("mèo")

print(con_meo.keu())

print(DongVat.mo_ta_loai())

print(DongVat.thong_tin())

Tạo và sử dụng đối tượng (instance) của class

Khi tạo class trong Python, việc sinh ra và sử dụng đối tượng (instance) là bước quan trọng để hiện thực hóa bản thiết kế của class. Đối tượng là một thể hiện cụ thể của class, được tạo bằng cách gọi tên class như một hàm, kèm theo các tham số cần thiết (nếu có).

Cách tạo và sử dụng đối tượng:

  • Khởi tạo đối tượng: Gọi tên class với các tham số phù hợp, thường thông qua hàm khởi tạo __init__.
  • Truy cập thuộc tính/phương thức: Sử dụng dấu chấm (.) để gọi thuộc tính hoặc phương thức của đối tượng.

Ví dụ:

class ChiecXe:

def __init__(self, hang_xe, nam_sx):

   self.hang_xe = hang_xe

   self.nam_sx = nam_sx

def thong_tin(self):

   return f"Xe {self.hang_xe}, sản xuất năm {self.nam_sx}"

def di_chuyen(self):

   return f"Xe {self.hang_xe} đang lăn bánh!"

xe1 = ChiecXe("Toyota", 2023)

xe2 = ChiecXe("Honda", 2021)

print(xe1.thong_tin())

print(xe2.di_chuyen())

Tạo và sử dụng đối tượng (instance) của class
Tạo và sử dụng đối tượng

Trong ví dụ, xe1 và xe2 là hai đối tượng riêng biệt được tạo từ class ChiecXe. Mỗi đối tượng có thuộc tính riêng (hang_xe, nam_sx) và có thể gọi phương thức như thong_tin() hoặc di_chuyen().

Các khái niệm nâng cao trong class

Class trong Python là một công cụ đầy uy lực, không chỉ dừng lại ở việc tạo đối tượng mà còn mở ra cánh cửa đến những khái niệm tinh tế hơn. Hãy cùng khám phá những ý tưởng nâng cao này, nơi class trở thành nền tảng cho mã nguồn linh hoạt và mạnh mẽ.

Tính kế thừa (Inheritance)

Trong lập trình, class trong Python là một cấu trúc có tính kế thừa (inheritance). Kế thừa cho phép một class mới (gọi là class con) thừa hưởng các thuộc tính và phương thức từ một class hiện có (class cha), giống như con cái nhận đặc điểm từ cha mẹ.

Các khái niệm nâng cao trong class 1

Vì thế, class trong Python giúp tái sử dụng mã nguồn, tăng tính mô-đun và dễ dàng mở rộng chức năng.

Ví dụ:

class DongVat:

def __init__(self, ten):

self.ten = ten

def di_chuyen(self):

return f"{self.ten} đang di chuyển."

class Chim(DongVat):

def __init__(self, ten, canh_dai):

super().__init__(ten)

self.canh_dai = canh_dai

def di_chuyen(self):

return f"{self.ten} đang bay với đôi cánh dài {self.canh_dai}m!"

def hot(self):

return f"{self.ten} đang hót líu lo."

chim_se = Chim("sẻ", 0.3)

print(chim_se.di_chuyen())

print(chim_se.hot())

print(chim_se.ten)

Trong ví dụ, Chim là class con kế thừa từ DongVat. Nó sử dụng super() để gọi hàm khởi tạo của class cha, ghi đè phương thức di_chuyen và bổ sung phương thức mới hot.

Tính đa hình (Polymorphism)

Khi tạo class trong Python, tính đa hình (polymorphism) cho phép các đối tượng từ các class khác nhau thực hiện cùng một hành vi theo cách riêng biệt. Sự đa hình giúp các class chia sẻ giao diện chung (như tên phương thức) nhưng triển khai khác nhau, tăng tính linh hoạt và tái sử dụng mã.

Ví dụ:

class DongVat:

def __init__(self, ten):

self.ten = ten

def keu(self):

return f"{self.ten} phát ra âm thanh."

class Cho(DongVat):

def keu(self):

return f"{self.ten} sủa: Gâu gâu!"

class Meo(DongVat):

def keu(self):

return f"{self.ten} kêu: Meo meo!"

cho = Cho("Buddy")

meo = Meo("Miu")

danh_sach = [cho, meo]

for dv in danh_sach:

print(dv.keu())

Trong ví dụ, cả Cho và Meo đều thừa hưởng từ DongVat, đồng thời tái định nghĩa phương thức keu theo cách riêng. Khi gọi keu trên danh sách các đối tượng, Python tự động thực thi phiên bản phù hợp với từng class, thể hiện tính đa hình.

Tính đóng gói (Encapsulation)

Khi tạo class trong Python, tính đóng gói (encapsulation) là một khái niệm nâng cao giúp bảo vệ và tổ chức dữ liệu bên trong class.Cách hoạt động của tính đóng gói được thực hiện bằng cách sử dụng các quy ước đặt tên cho thuộc tính và phương thức.

Ví dụ:

class ViTien:

def __init__(self, chu_vi, so_tien):

self.chu_vi = chu_vi

self.__so_tien = so_tien

def xem_so_tien(self):

return f"Ví của {self.chu_vi} có {self.__so_tien} VND"

def nap_tien(self, tien):

if tien > 0: self.__so_tien += tien

return f"Nạp {tien} VND thành công!"

return "Số tiền không hợp lệ!" vi = ViTien("An", 100000)

print(vi.xem_so_tien())

print(vi.nap_tien(50000))

print(vi.xem_so_tien())

try: print(vi.__so_tien)

except AttributeError:

print("Không xem được số tiền trực tiếp!")

Các khái niệm nâng cao trong class 2
Tính đóng gói trong Class Python

Trong ví dụ, Thuộc tính riêng tư __so_tien không thể truy cập trực tiếp, chỉ tương tác qua các phương thức công khai như xem_so_tien và nap_tien.

Class trừu tượng (Abstract classes) và Phương thức trừu tượng (Abstract methods)

Khi tạo class trong Python, class trừu tượng (abstract classes) và phương thức trừu tượng (abstract methods) giúp định hình các khuôn mẫu mà không cho phép tạo đối tượng trực tiếp. Trong Python, module abc (Abstract Base Class) được sử dụng để tạo class trừu tượng, với decorator @abstractmethod để đánh dấu phương thức trừu tượng.

Ví dụ:

from abc import ABC, abstractmethod

class PhuongTien(ABC):

@abstractmethod

def di_chuyen(self):

pass

class XeDap(PhuongTien):

def di_chuyen(self):

return "Xe đạp lướt trên đường!"

class TauThuy(PhuongTien):

def di_chuyen(self):

return "Tàu thủy trôi trên sóng!"

xe_dap = XeDap()

tau = TauThuy()

print(xe_dap.di_chuyen())

print(tau.di_chuyen())

Trong ví dụ này, Class trừu tượng - PhuongTien kế thừa ABC, không thể tạo đối tượng trực tiếp. Phương thức trừu tượng - di_chuyen được khai báo với @abstractmethod, buộc các class con (XeDap, TauThuy) phải triển khai.

Ứng dụng của class trong Python

Class là "khung xương" logic, kết nối dữ liệu và hành vi, hình thành các mẫu tái sử dụng đầy linh hoạt. Ứng dụng của class bao gồm:

  • Mô phỏng thực tế: Dùng class để tái hiện các thực thể như khách hàng, sản phẩm, hay đơn hàng một cách rõ ràng.
  • Tối ưu mã: Định nghĩa một lần, sử dụng nhiều nơi, tránh lặp lại.
  • Cấu trúc hóa: Chia mã thành các khối class, dễ quản lý, bảo trì.
  • Kế thừa và đa hình: Tạo class mới từ class cũ, tùy chỉnh hành vi linh hoạt.

Ứng dụng của class trong Python

Nếu coi chương trình như một hệ sinh thái thì việc tạo class trong Python chính là cách bạn đặt nền móng. Bạn có thể tận dụng nó để xây dựng nên những thành phần có khả năng tự vận hành, tương tác và mở rộng theo nhu cầu.

Một số bài tập về class trong Python

Giờ là lúc bạn vận dụng những thứ mình biết vào các bài tập về class trong Python từ cơ bản đến nâng cao sau đây.

Một số bài tập về class trong Python
Một số bài tập về class trong Python

Bài tập 1: Quản lý cửa hàng thực phẩm (Cơ bản) Hãy xây dựng một class MatHang để quản lý thực phẩm trong cửa hàng. Khi tạo class trong Python, class cần có:

  • Thuộc tính: tên mặt hàng, giá mỗi đơn vị, số lượng tồn.
  • Phương thức: hiển thị thông tin mặt hàng, bán hàng (giảm số lượng), nhập hàng (tăng số lượng).
  • Đảm bảo số lượng không âm và kiểm tra đủ hàng trước khi bán.

Bài tập 2: Hệ thống tài khoản người dùng (Đóng gói) Thiết kế class NguoiDung với tính đóng gói:

  • Thuộc tính: tên người dùng (công khai), mật khẩu (riêng tư), điểm tích lũy (bảo vệ).
  • Phương thức: Công khai: hiển thị thông tin, thay đổi mật khẩu (kiểm tra mật khẩu cũ).
  • Bảo vệ: tăng điểm tích lũy. Thử truy cập trực tiếp thuộc tính riêng tư để kiểm tra lỗi.

Bài tập 3: Mô phỏng trận chiến (Ứng dụng tổng hợp) Xây dựng trò chơi phiêu lưu:

  • Class NhanVat với thuộc tính tên, năng lượng (riêng tư), vũ khí.
  • Phương thức: chiến đấu (gây thiệt hại cho đối thủ), kiểm tra trạng thái (năng lượng còn hay hết).
  • Tạo hai nhân vật, mô phỏng trận chiến bằng cách cho họ chiến đấu luân phiên đến khi một bên hết năng lượng.

Class trong Python là gì không còn là câu hỏi khó nhằn khi bạn đã trải qua toàn bộ hành trình từ lý thuyết đến thực hành trong bài viết này. Đừng quên luyện tập thêm qua các bài tập về tạo class trong Python để nâng cao kỹ năng một cách thực tiễn và hiệu quả. Hãy vận dụng thêm kiến thức lập trình khác thông qua cùng chuyên mục trên Sforum nhé.

Xem thêm bài viết trong chuyên mục: Ứng dụng/phần mềm, Python cơ bản

danh-gia-bai-viet
(0 lượt đánh giá - 5/5)

Bạn đam mê khám phá những xu hướng mới và tìm kiếm những điều thú vị trong thế giới số? Mình là Mỹ Linh - người cùng bạn bước vào hành trình khám phá những điều mới mẻ. Với các bài viết chi tiết và đầy thông tin hữu ích, mình ở đây để mang lại tất cả những gì bạn cần biết để không bỏ lỡ bất kỳ điều tuyệt vời nào!

Bình luận (0)

sforum facebook group logo