Kế thừa đa lớp
Thuộc phần Lập trình hướng đối tượng trong hành trình Python của Coddy. Bài học 20 trên 64.
Kế thừa đa lớp cho phép một lớp kế thừa từ nhiều lớp cha, kết hợp chức năng từ các nguồn khác nhau.
Đây là hai lớp cha:
class Animal:
def __init__(self, name):
self.name = name
def eat(self):
return f"{self.name} is eating"
class Flyable:
def fly(self):
return f"{self.name} is flying"Tạo một lớp con kế thừa từ cả hai lớp cha:
class Bird(Animal, Flyable):
def __init__(self, name, species):
super().__init__(name) # Gọi __init__ của Animal
self.species = species
def sing(self):
return f"{self.name} is singing"Cú pháp class Bird(Animal, Flyable): có nghĩa là Bird kế thừa từ cả Animal và Flyable.
Tạo một đối tượng chim và sử dụng các phương thức từ cả hai lớp cha:
sparrow = Bird("Sparrow", "House sparrow")Gọi các phương thức từ lớp cha đầu tiên:
print(sparrow.eat())Gọi các phương thức từ lớp cha thứ hai:
print(sparrow.fly())Gọi phương thức của chính chú chim:
print(sparrow.sing())Đầu ra:
Sparrow is eating
Sparrow is flying
Sparrow is singingBạn có thể kiểm tra thứ tự kế thừa:
print(Bird.__mro__) # Thứ tự phân giải phương thứcĐiều này cho biết lớp cha nào được kiểm tra trước khi tìm phương thức.
Điểm chính: Kế thừa nhiều lớp (multiple inheritance) dùng cú pháp class Child(Parent1, Parent2):. Lớp con nhận tất cả phương thức (method) từ mọi lớp cha. Python kiểm tra các lớp cha từ trái sang phải khi tìm phương thức.
Thử thách
Trung bìnhTrong thử thách này, bạn sẽ triển khai hệ thống lớp gồm nhiều tệp, minh họa tính kế thừa đa lớp qua điện thoại thông minh. Mỗi lớp nằm trong một tệp riêng để sắp xếp code tốt hơn.
Bạn cần chỉnh sửa các tệp sau:
device.py- Triển khai lớp cơ sởDeviceinternet.py- Triển khai lớp cơ sởInternetsmartphone.py- Triển khai lớpSmartphonekế thừa từ cả hai lớp cơ sởdriver.py- Triển khai các test case để xác minh phần triển khai của bạn hoạt động chính xác
Mỗi tệp đều có các chú thích TODO chi tiết hướng dẫn bạn từng bước triển khai.
Tự làm thử
# TODO: Nhập lớp (class) Smartphone từ smartphone.py
# Tạo một điện thoại thông minh và kiểm tra các phương thức (method) của nó
# TODO: Tạo đối tượng (object) Smartphone có thương hiệu "Apple" và mẫu "iPhone 13"
my_phone = None
# TODO: Gọi phương thức power_on() của điện thoại thông minh và in kết quả ra
# TODO: Gọi phương thức connect() của điện thoại thông minh và in kết quả ra
# TODO: Gọi phương thức make_call() của điện thoại thông minh với tham số (parameter) "123-456-7890" và in kết quả raBài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.
Tất cả bài học trong Lập trình hướng đối tượng
1Nền tảng về lập trình hướng đối tượng
Tệp bên ngoàiGiới thiệu về lập trình hướng đối tượngLớp và đối tượngTham số selfPhương thứcThuộc tínhPhương thức khởi tạo (__init__)Ôn tập: máy tính đơn giản4Kế thừa
Kế thừa cơ bảnHàm super()Ghi đè phương thứcKế thừa đa lớpThứ tự phân giải phương thứcÔn tập: hệ thống phân cấp nhân viên2Decorator
Giới thiệu về decoratorDecorator thuộc tínhDecorator phương thức tĩnhDecorator phương thức lớp5Tính đa hình
Xem lại cách ghi đè phương thứcKiểu gõ vịtLớp và phương thức trừu tượngThiết kế giao diệnÔn tập: máy tính hình học8Các khái niệm OOP nâng cao
Kết hợp và kế thừaMixinPhương thức tĩnh và phương thức lớpDecorator lớpTrình quản lý ngữ cảnhTự luyện tập: Trình biên dịch Python online