Menu
CoddyTech

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 singing

Bạ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.

challenge icon

Thử thách

Trung bình

Trong 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ở Device
  • internet.py - Triển khai lớp cơ sở Internet
  • smartphone.py - Triển khai lớp Smartphone kế 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ả ra
quiz iconTự kiểm tra

Bà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

Tự luyện tập: Trình biên dịch Python online