Khái niệm hướng đối tượng trong Python
Python là một ngôn ngữ lập trình hướng đối tượng. Do đó với những bạn đã học qua C++ chắc rằng đã khá quen thuộc với các khái niệm về hướng đối tượng này. Chương này sẽ trình bày sơ qua về các thuật ngữ liên quan đến hướng đối tượng cùng với các ví dụ minh họa giúp bạn dễ hiểu hơn về vấn đề đã trình bày.
Một số khái niệm hướng đối tượng
-
Lớp: Một nguyên mẫu được định nghĩa bởi người dùng cho một đối tượng mà định nghĩa một tập hợp các thuộc tính mà xác định rõ bất kỳ đối tượng nào của lớp đó. Các thuộc tính là các thành viên dữ liệu (các biến class và biến instance) và các phương thức được truy cập thông qua toán tử dot (dấu chấm .).
-
Biến class: Đây là một biến được chia sẻ bởi tất cả các instance (sự thể hiện) của một lớp. Các biến class được định nghĩa bên trong một lớp nhưng ở bên ngoài bất cứ phương thức nào của lớp đó. Biến class không được sử dụng thường xuyên như biến instance.
-
Thành viên dữ liệu: Là một biến class hoặc biến instance mà giữ dữ liệu được liên kết với một lớp và các đối tượng của nó.
-
Nạp chồng hàm (overloading): Là phép gán của nhiều hơn một hành vi tới một hàm cụ thể. Hoạt động được thực hiện là đa dạng do các kiểu của các đối tượng hoặc tham số liên quan.
-
Biến instance: Là một biến được định nghĩa bên trong một phương thức và chỉ thuộc sở hữu của instance hiện tại của một lớp đó.
-
Tính kế thừa: Là việc truyền các đặc trưng của một lớp cho các lớp khác mà kế thừa từ lớp ban đầu.
-
Instance: Là một đối tượng riêng của một lớp nào đó. Một đối tượng obj mà thuộc một lớp Circle là một instance (sự thể hiện) của lớp Circle.
-
Trình khởi tạo: Là trình tạo một sự thể hiện của một lớp.
-
Phương thức: Một loại hàm đặc biệt mà được định nghĩa trong một phần định nghĩa lớp.
-
Đối tượng: Một instance duy nhất của một cấu trúc dữ liệu mà được định nghĩa bởi lớp của nó. Một đối tượng gồm các thành viên dữ liệu (biến class và biến instance) và các phương thức.
-
Nạp chồng toán tử: Là phép gán của nhiều hơn một hàm cho một toán tử cụ thể.
Tạo các lớp trong Python
Trong Python, lệnh class được sử dụng để tạo một lớp mới. Tên của lớp theo ngay sau từ khóa class và được theo sau bởi dấu hai chấm, như sau:
class TenLop:
'Phan documentation string cho lop la tuy y'
class_suite
-
Lớp có một Documentation String mà có thể được truy cập thông qua TenLop.__doc__.
-
class_suite gồm tất cả các lệnh thành phần mà định nghĩa các thành viên lớp, cấu trúc dữ liệu và hàm.
Dưới đây là ví dụ đơn giản về một lớp trong Python:
class Sinhvien:
'Class co so chung cho tat ca sinh vien'
svCount = 0
def __init__(self, ten, hocphi):
self.ten = ten
self.hocphi = hocphi
Sinhvien.svCount += 1
def displayCount(self):
print "Tong so Sinh vien %d" % Sinhvien.svCount
def displaySinhvien(self):
print "Ten : ", self.ten, ", Hoc phi: ", self.hocphi
-
Biến svCount là một biến class có giá trị được chia sẻ trong tất cả instance của lớp Sinhvien này. Biến này có thể được truy cập dưới dạng Sinhvien.svCount từ bên trong lớp hoặc bên ngoài lớp.
-
Phương thức đầu tiên __init__() là một phương thức đặc biệt, là constructor của lớp hoặc phương thức khởi tạo mà Python gọi khi bạn tạo một instance mới của lớp này.
-
Bạn khai báo các phương thức khác như các hàm thông thường với exception là tham số đầu tiên cho mỗi phương thức là self. Python thêm tham số self tới List cho bạn; bạn không cần bao nó khi bạn gọi các phương thức.
Tạo Instance trong Python
Để tạo các instance của một lớp, bạn gọi lớp này bởi sử dụng tên lớp và truyền vào bất kỳ tham số nào mà phương thức __init__ của nó chấp nhận. Bạn theo dõi ví dụ sau:
"Lenh nay tao doi tuong dau tien cua lop Sinhvien"
sv1 = Sinhvien("Hoang", 4000000)
"Lenh nay tao doi tuong thu hai cua lop Sinhvien"
sv2 = Sinhvien("Huong", 4500000)