Trang chủ>  Blog >  Kiến thức chuyên môn >  Lập trình hướng đối tượng python

Lập trình hướng đối tượng python


Lập trình hướng đối tượng là phương thức tiên tiến được ứng dụng trong nhiều ngôn ngữ lập trình trên thế giới, được ưa chuộng sử dụng bởi các lập trình viên do lập trình hướng đối tượng giúp tinh gọn, đơn giản hóa các dòng lệnh phức tạp. Python là ngôn ngữ lập trình ứng dụng phương thức này một cách triệt để, góp phần khiến python trở nên đơn giản, dễ dùng. Vậy hãy cùng MCI tìm hiểu lập trình hướng đối tượng python là như thế nào nhé.

  633 lượt xem

Nội dung bài viết

Lập trình hướng đối tượng là phương thức tiên tiến được ứng dụng trong nhiều ngôn ngữ lập trình trên thế giới, được ưa chuộng sử dụng bởi các lập trình viên do lập trình hướng đối tượng giúp tinh gọn, đơn giản hóa các dòng lệnh phức tạp. Python là ngôn ngữ lập trình ứng dụng phương thức này một cách triệt để, góp phần khiến python trở nên đơn giản, dễ dùng. Vậy hãy cùng MCI tìm hiểu lập trình hướng đối tượng python là như thế nào nhé.

 

Tổng quan lập trình hướng đối tượng Python

 

lập trình hướng đối tượng python

Lập Trình Hướng Đối Tượng Trong Python

 

Lập trình hướng đối tượng (tiếng Anh là Object-Oriented Programming - OOP) là phương thức kỹ thuật trong đó lập trình viên định nghĩa một đối tượng và gọi đối tượng đó ra sử dụng khi cần bằng những ký hiệu hoặc tên được nhà lập trình định nghĩ trước đó.

 

Lập trình hướng đối tượng Python còn được gọi là DRY (Don't Repeat Yourself) ám chỉ việc hạn chế việc sử dụng lại những dòng lệnh tương tự nhau.

 

Phương thức này giúp rút ngắn thời gian thực hiện dự án, đơn giản hóa câu lệnh, giảm dung lượng file code, dễ dàng bảo trì, tối ưu và mở rộng trong tương lai.

 

Nguyên lý cơ bản của OOP trong python

 

Lập trình hướng đối tượng Python tuân theo 3 nguyên lý sau:

 

  1. Tính kế thừa (Inheritance): cho phép một class sử dụng các thuộc tính và phương thức từ các class khác đã được định nghĩa mà không cần định nghĩa lại.
  2. Tính đóng gói (Encapsulation): là nguyên lý chỉ các dòng lệnh thực thi bên trong một đối tượng không thể bị thay đổi hoặc can thiệp trực tiếp từ bên ngoài
  3. Tính đa hình (Polymorphism): là nguyên lý chỉ việc nhiều class có những cách thức hoạt động tương tự nhau nhưng có thể thực thi theo cách thức khác nhau.

 

Một số khái niệm thuật ngữ lập trình hướng đối tượng python bạn cần nắm

 

Đối tượng (Object) và Lớp (Class)

 

Đối tượng (tiếng Anh: Object) trong lập trình hướng đối tượng python là một thực thể được quy định đặc tính, hành vi

 

Lớp (tiếng Anh: Class): một kiểu dữ liệu do người dùng định nghĩa bằng những dòng lệnh, quy định các thuộc tính do người dùng tự tạo

 

Cấu trúc cú pháp:
class ClassName:
   statement_1
   ...
   statement_n

 

Khác nhau giữa đối tượng và hành vi

 

Đối tượng (Object) có thuộc tính và hành vi được quy định

 

Lớp (Class) như một định dạng mẫu mô tả thuộc tính và hành vi của đối tượng mà lớp đó hỗ trợ

 

=> Một đối tượng (Object) là thực thể (instance) của một lớp (Class) trong lập trình hướng đối tượng python

 

Ví dụ

 

class Dog:

 

# thuộc tính lớp
loaicon = "Chó"

 

# thuộc tính đối tượng
def __init__(self, tencho, giongcho ,maulong):
    self.tencho= tencho
    self.giongcho= giongcho
    self.maulong= maulong

 

# Khởi tạo class Dog
Chihuahua = Dog(‘’kiki” ,"Chihuahua", "Đỏ")
Bulldog = Dog(“ben” ,"Bulldog", "Vàng")
Pug = Dog(“bắc” ,"Pug", "Xanh")

 

# Truy cập thuộc tính của class
print("Chihuahua là {}.".format(Chihuahua.__class__.loaicon))
print("Bulldog là {}.".format(Bulldog.__class__. loaicon))
print("Pug cũng là {}.".format(Pug.__class__. loaicon))

 

# Truy cập các thuộc tính thực thể
print("Chó {} có màu {}, thuộc giống chó {}".format( Chihuahua.tenxe, Chihuahua.mausac, Chihuahua.nguyenlieu))
print("Chó {} có màu {}, thuộc giống chó {}".format( Bulldog.tenxe, Bulldog.mausac, Bulldog.nguyenlieu))
print("Chó {} có màu {}, thuộc giống chó {}".format( Pug.tenxe, Pug.mausac, Pug.nguyenlieu))

 

Kết quả:

 

Chihuahua là Chó.
Bulldog là Chó.
Pug cũng là Chó.
Chó kiki có màu Đỏ, thuộc giống chó Chihuahua.
Chó ben có màu Đỏ, thuộc giống chó Bulldog.
Chó bắc có màu Đỏ, thuộc giống chó Pug.

 

Trong phần thuộc tính đối tượng:

 

  • Dòng 1: __init__ là phương thức tự động được gọi khi 1 đối tượng được tạo. Phương thức này có thể có hoặc không các tham số, tham số đầu tiên bắt buộc phải là self.
  • Dòng 4, 5: quy định các thuộc tính trong class. Lưu ý bắt buộc phải truy xuất các class thông qua tham số self

 

Lưu ý:

 

  • Không thể khai báo 2 phương thức __init__ trong cùng 1 class.
  • self dùng để tham chiếu đến chính đối tượng đang được thao tác.

 

Phương thức (Method)

 

Phương thức (tiếng Anh: Method) trong lập trình hướng đối tượng python chính là các hàm lệnh bên trong cấu tạo của một Class, có chức năng chính là xác định hành vi của đối tượng (Object)

 

Ví dụ

 

class Dog:

 

# thuộc tính đối tượng
def __init__(self, tencho, giongcho ,maulong):
        self.tencho= tencho
        self.giongcho= giongcho
        self.maulong= maulong

 

  # phương thức
  def ngoi(self, mucdich):
        return "{} đang ngồi để {}".format(self.tencho,mucdich)
  def chay(self):
        return "{} đang chạy trên vỉa hè".format(self.tencho)
  def sua(self):
        return "{} đang sủa".format(self.tencho)

 

# Khởi tạo class Dog
Chihuahua = Dog(‘’kiki” ,"Chihuahua", "Đỏ")
Bulldog = Dog(“ben” ,"Bulldog", "Vàng")
Pug = Dog(“bắc” ,"Pug", "Xanh")

 

# Gọi các phương thức của thực thể
print(kiki.ngoi("liếm lông"))
print(ben.chay())
print(bắc.sua())

 

Kết quả là:

 

kiki đang ngồi để liếm lông
ben đang chạy trên vỉa hè
bắc đang sủa

 

Trong ví dụ trên, các bạn có thể thấy có 3 phương thức được định nghĩa bao gồm: ngoi(), chay(), sua()

 

Tính Kế Thừa (Inheritance)

 

Tính kế thức trong lập trình hướng đối tượng python cho phép một class có thể sử dụng các thuộc tính và phương thức từ các class đã được định nghĩa trước đó

 

Có thể hiểu đơn giản hơn, lớp kế thừa thuộc tính của lớp khác được gọi là lớp con, lớp đã được định nghĩa trước đó gọi là lớp cha

 

Class con kế thừa các thành phần của class cha và có thể mở rộng và bổ sung các thành phần mới

 

Ví dụ:

 

class Dog:

 

# thuộc tính đối tượng
def __init__(self, tencho, giongcho ,maulong):
    self.tencho= tencho
    self.giongcho= giongcho
    self.maulong= maulong

 

# phương thức
def ngoi(self, mucdich):
        return "{} đang ngồi để {}".format(self.giongcho,mucdich)
def chay(self):
        return "{} đang chạy trên vỉa hè".format(self.giongcho)

 

# Lớp Chihuahua mở rộng từ lớp Dog
class Chihuahua(Dog):
     def __init__(self, tencho, giongcho ,maulong, thucan):

# Gọi tới constructor của lớp cha (Dog) để gán giá trị vào thuộc tính của lớp cha
super().__init__(tencho, giongcho ,maulong)
        self.thucan = thucan

 

# Kế thừa phương thức cũ
def chay(self):
        print ("{} đang chạy trên vỉa hè".format(self.giongcho))

 

# Ghi đè phương thức cùng tên của lớp cha.
def ngoi(self, mucdich):
        print ("{} đang ngồi để {}".format(self.giongcho, mucdich))
        print ("{} thích ăn {}".format(self.giongcho, self.thucan))

 

# Bổ sung thêm thành phần mới
def sua(self):
        print ("{} đang sủa".format(self.giongcho))

 

Chihuahua1 = Toyota("Chihuahua", "Chihuahua A", "Đỏ", "Thịt")
Chihuahua2 = Toyota("Chihuahua", "Chihuahua B", "Vàng", "Rau")
Chihuahua3 = Toyota("Chihuahua", "Chihuahua C", "Xanh", "Xương")

 

Chihuahua1.ngoi("liếm lông")
Chihuahua2.chay()
Chihuahua3.sua()

 

Kết quả:

 

Chihuahua A đang ngồi để liếm lông
Chihuahua A thích ăn Thịt
Chihuahua B đang chạy trên vỉa hè
Chihuahua C đang sủa

 

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

 

Tính đóng gói trong lập trình hướng đối tượng python áp dụng nhằm tránh những truy cập vào các hàm thuộc tính lõi của đối tượng.

 

Trong ngôn ngữ lập trình Python, bạn có thể biểu thị tính đóng gói bằng cách sử dụng dấu gạch dưới làm tiền tố như: "_" hoặc "__"

 

Ví dụ

 

class Dog:

 

def __init__(self):        

 

# Áp dụng tính đóng gói ngăn chặn sửa đổi trực tiếp      
self.__maxprice = 1000000

 

def sell(self):  
       print("Giá bán của chó: {}".format(self.__maxprice))
def setMaxPrice(self, price):  
      self.__maxprice = price

 

c = Dog()c.sell()

 

# thay đổi giá
c.__maxprice = 2000000
c.sell()

 

# thay đổi giá bằng hàm setter
c.setMaxPrice(2000000)
c.sell()

 

Kết quả là:

 

Giá bán của chó: 900 Giá bán của chó: 900 Giá bán của chó: 1000

 

Tính đa hình (Polymorphism)

 

Tính đa hình trong lập trình hướng đối tượng python chỉ đến các Class chứa những phương thức tương tự nhau nhưng được thực thi theo các cách khác nhau

 

Ví dụ

 

class Chihuahua:
     def ngoi(self):        
print("Chihuahua ngồi để liếm lông")
     def sua(self):        
print("Chihuahua đang sủa")
class Bulldog:
     def ngoi(self):       
 print("Bulldog ngồi để quan sát")
     def sua(self):       
 print("Bulldog đang sủa tên trộm")

# Tạo hàm chung
def kiemtra_ngoi(Dog): Dog.ngoi()

 

# Khởi tạo đối tượng
Chihuahua = Chihuahua()
Bulldog = Bulldog()

 

# Truyền đối tượng vào hàm
kiemtra_ngoi(Chihuahua)
kiemtra_ngoi(Bulldog)

 

Kết quả:

 

Chihuahua ngồi để liếm lông
Bulldog ngồi để quan sát

Chương trình đào tạo: Phân tích dữ liệu, Khoa học dữ liệu, Kĩ sư dữ liệu, Lập trình ứng dụng.
Chất lượng nhất - Uy tín nhất - Nhiều học viên tin tưởng nhất
Hơn 8000 học viên ưu tú đã tốt nghiệp
Các khóa học

Đăng ký tư vấn khóa học

*Vui lòng nhập số điện thoại của bạn

*Vui lòng nhập họ tên của bạn

*Vui lòng chọn địa điểm học

*Vui lòng chọn giới tính

*Vui lòng chọn 1 trường


Các bài viết liên quan


Python được sử dụng trong phân tích dữ liệu như thế nào

Python được sử dụng trong phân tích dữ liệu như thế nào để giúp doanh nghiệp xử lý dữ liệu hiệu quả, dự báo xu hướng và đưa ra quyết định chính xác hơn?

10+ Cách học Python hiệu quả tốt nhất cho người mới bắt đầu

Khám phá 10+ cách học Python hiệu quả nhất cho người mới bắt đầu với hướng dẫn chi tiết, phương pháp nhanh chóng, và bí quyết thực hành tốt nhất từ các chuyên gia lập trình

Các cách học Python hiệu quả dành cho người mới bắt đầu

Khám phá các cách học Python hiệu quả dành cho người mới bắt đầu để nhanh chóng nắm vững kỹ năng lập trình và phát triển bản thân với Python

Các bài viết liên quan