Search…

Lập Trình Hướng Đối Tượng Trong Python - Phần 1: Cơ Bản

04/11/20203 min read
Đặc điểm và cách hiện thực lập trình hướng đối tượng trong Python.

Lập trình hướng đối tượng là một kỹ thuật hỗ trợ, cho phép lập trình viên trực tiếp làm việc với các đối tượng mà họ định nghĩa. Giúp tăng năng suất, đơn giản hóa độ phức tạp khi bảo trì cũng như mở rộng phần mềm.

Hiện nay có khá nhiều ngôn ngữ lập trình theo hướng đối tượng như C++, Java, PHP, ... và còn cả Python. 

Một vài thuật ngữ hướng đối tượng

  • Lớp (Class): kiểu dữ liệu do người dùng định nghĩa, tập hợp nhiều thuộc tính đặc trưng cho đối tượng được tạo ra từ lớp đó, các thuộc tính là các biến thành viên hoặc phương thức.
  • Đối tượng (Object): Một thể hiện cụ thể của cấu trúc dữ liệu được định nghĩa trong lớp. Một đối tượng bao gồm cả các biến thành viên và phương thức.
  • Thuộc tính (Data member): thuộc tính được định nghĩa trong lớp.
  • Phương thức (Method): được định nghĩa trong lớp nhằm thực hiện một công việc.
  • Kế thừa (Inheritace):tính chất của các ngôn ngữ lập trình hướng đối tượng cho phép các lớp mở rộng từ 1 lớp có sẵn.

Định nghĩa lớp

Cú pháp

class ClassName:
   statement_1
   .
   .
   statement_n

Ví dụ

#!/usr/bin/python
class Animal:
	def __init__(self, genus, age):
		self.genus = genus
		self.age = age
	def foot(self):
		print ("Gobble")
	def say(self):
		pass

Trong đó:

  • Dòng 3: phương thức __init__ có là constructor, phương thức này tự động được gọi khi 1 đối tượng được tạo ra. 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: các thuộc tính trong lớp bắt buộc phải được truy xuất thông qua tham số self, các thuộc tính sẽ được tạo ra khi được gán lần đầu tiên.
  • Dòng 6, 8: khai bá phương thức, tham số đầu tiên trong phương thức phải là 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.

Tạo đối tượng

Xét ví dụ sau:

dog = Animal('Dog', 10)

Ví dụ trên là cách để tạo một đối tượng từ một class, các tham số truyền vào khi tạo đối tượng sẽ tương ứng với các tham số trong phương thức __init__ của lớp đó.

Truy cập các thuộc tính của đối tượng

Có thể truy cập các thuộc tính của đối tượng thông qua toán tử chấm ..

Ví dụ

dog.genus
dog.eat()

Có thể thêm mới, hoặc cập nhật lại các thuộc tính cho đối tượng sau khi đã khởi tạo nó.

Ví dụ

dog.name = "Rex"
dog.age = 11

Ngoài các cách thông thường để truy cập các thuộc tính, Python còn cho phép truy cập thông qua một số phương thức dựng sẵn:

Hàm Mô tả
getattr(obj, name[, default]) Lấy 1 thuộc tính của đối tượng, nếu đối tượng này không có thuộc tính đó thì giá trị trả về là default. Khi default không được truyền vào thì giá trị trả về là None.
hasattr(obj, name) Kiểm tra thuộc tính có tồn tại trong đối tượng này hay không, nếu có thì trả về True và ngược lại.
setattr(obj, name, value) Gán giá trị value cho thuộc tính trong đối tượng.
delattr(obj, name) Xoá thuộc tính trong đối tượng.

Ví dụ

#!/usr/bin/python
class Animal:
	def __init__(self, genus, age):
		self.genus = genus
		self.age = age
	def foot(self):
		print("Gobble")
	def say(self):
		pass
		
dog = Animal('Dog', 10)

if(not(hasattr(dog, 'name'))):
	setattr(dog, 'name', 'Rex')
	
print("Name: ", dog.name)
print("Age: ", dog.age)
IO Stream

IO Stream Co., Ltd

30 Trinh Dinh Thao, Hoa Thanh ward, Tan Phu district, Ho Chi Minh city, Vietnam
+84 28 22 00 11 12
developer@iostream.co

383/1 Quang Trung, ward 10, Go Vap district, Ho Chi Minh city
Business license number: 0311563559 issued by the Department of Planning and Investment of Ho Chi Minh City on February 23, 2012

©IO Stream, 2013 - 2024