Lập trình hướng đối tượng với Python¶
Python OOP
Các khái niệm cơ bản¶
- Lớp (class): Là cấu trúc dữ liệu mô tả các đối tượng giống nhau về tính chất (properties) và phương thức (methods).
- Đối tượng (object): là thực thể được tạo ra từ một lớp. Một lớp có thể tạo ra nhiều đối tượng khác nhau.
Định nghĩa lớp¶
- Cú pháp
class ClassName:
<Các biến thành viên>
<Các hàm thành viên>
Phương thức __init__()
¶
- Hàm thiết lập (constructor) của lớp Python có tên là
__init__()
. - Hàm thiết lập được gọi mỗi khi đối tượng được tạo ra. Vì thế, thường dùng hàm này để khởi tạo các giá trị ban đầu cho đối tượng.
- Ví dụ:
# Khai báo lớp học sinh
class Student:
# Khai báo hàm khởi tạo
def __init__(self, name, age):
self.name = name
self.age = age
def PrintInfo(self):
print('{}, {}'.format(self.name, self.age))
# Tạo đối tượng và khởi tạo giá trị
sv1 = Student("Trung", 18)
sv2 = Student('Thực', 19)
sv1.PrintInfo()
sv2.PrintInfo()
Lớp bên trong lớp¶
- Ví dụ:
# Minh họa cài đặt lớp bên trong lớp
# Lớp Laptop (outer class)
import datetime
class Laptop:
# Phương thức khởi tạo của lớp ngoài
def __init__(self, model, year=datetime.datetime.now().year, btr_voltage=None, btr_capacity=None):
assert isinstance(year, int) and year > 0, 'Năm phải là số nguyên dương'
self.Model = model # model
self.Year = year # năm sản xuất
self.Battery = self.Battery(btr_voltage, btr_capacity)
# Phương thức in thông tin của lớp ngoài
def PrintInfo(self):
print('Laptop model: {}, Year: {}'.format(self.Model, self.Year))
# Gọi phương thức in thông tin của lớp trong
self.Battery.PrintInfo()
# Cài đặt lớp Battery (inner class) bên trong lớp Laptop
class Battery:
# Phương thức khởi tạo của lớp trong
def __init__(self, volate, capacity):
self.Voltage = volate # Điện thế
self.Capacity = capacity # Dung lượng
# Phương thức in thông tin của lớp trong
def PrintInfo(self):
print('Battery info: Voltage: {}, Capacity: {}'.format(self.Voltage, self.Capacity))
# Chương trình chính
if __name__ == '__main__':
lap1 = Laptop('Dell', 2020, '12V', '55kWh')
lap1.PrintInfo()