Kế thừa Python OOP: Lớp cha và con
Tìm hiểu tính kế thừa trong Python OOP. Phân lớp chính, các phương thức ghi đè, sử dụng super() và nhiều mẫu kế thừa.
Tổng quan
Kế thừa là một trong những trụ cột nền tảng của Lập trình hướng đối tượng (OOP). Đó là một cơ chế cho phép một lớp mới (được gọi là lớp con hoặc lớp con) tiếp nhận các thuộc tính và phương thức của một lớp hiện có (được gọi là lớp cha hoặc lớp cha). Mẫu thiết kế này thúc đẩy việc tái sử dụng mã, giảm sự dư thừa và thiết lập các mối quan hệ logic, phân cấp giữa các thành phần khác nhau trong ứng dụng của bạn.
Để triển khai tính kế thừa trong Python, bạn chuyển tên lớp cha bên trong dấu ngoặc đơn khi định nghĩa lớp con: `class Child(Parent):`. Lớp con kế thừa ngay lập tức tất cả các phương thức và biến của lớp cha. Nếu đứa trẻ cần hành vi tùy chỉnh, nó có thể ghi đè bất kỳ phương thức cha mẹ nào bằng cách xác định lại nó có cùng tên. Bên trong một phương thức được ghi đè, bạn vẫn có thể gọi cách triển khai của cha mẹ bằng cách sử dụng hàm `super()` tích hợp sẵn, đảm bảo bạn có thể mở rộng thay vì thay thế hoàn toàn logic hiện có.
Không giống như nhiều ngôn ngữ được gõ tĩnh, Python vốn hỗ trợ Đa kế thừa, nghĩa là một lớp con có thể kế thừa từ nhiều lớp cha (ví dụ: `class SmartDevice(Camera, Phone):`). Để giải quyết phương thức cha nào sẽ thực thi khi xung đột tên, Python sử dụng một thuật toán nghiêm ngặt được gọi là Thứ tự phân giải phương thức (MRO). Hiểu cách cấu trúc cây kế thừa và sử dụng super() là rất quan trọng để thiết kế các kiến trúc hướng đối tượng có thể mở rộng.
Đầu ra mã & thực thi
Tạo lớp Xe cha và lớp con Xe con ghi đè việc khởi tạo bằng cách sử dụng super().
class Vehicle:
def __init__(self, brand, year):
self.brand = brand
self.year = year
def display_info(self):
return f"{self.year} {self.brand}"
class Car(Vehicle):
def __init__(self, brand, year, model):
# Call parent constructor
super().__init__(brand, year)
self.model = model
def display_info(self):
# Override parent method and extend it
parent_info = super().display_info()
return f"{parent_info} {self.model}"
my_car = Car("Ford", 2026, "Mustang")
print(my_car.display_info())2026 Ford MustangTriển khai từng bước
- Tạo các lớp ngoại lệ tùy chỉnh kế thừa từ Ngoại lệ
- Xây dựng các thành phần giao diện người dùng (như Nút) kế thừa từ Chế độ xem chung
- Xác định các mô hình cơ sở dữ liệu phân cấp (ví dụ: Người dùng, Nhân viên, Người quản lý)
Câu hỏi thường gặp
Super() làm gì trong phân lớp?
super() trả về một đối tượng tạm thời của lớp cha, cho phép bạn gọi các phương thức của nó, điều này đặc biệt hữu ích để khởi tạo các trường cha trong __init__.
Bạn có thể ngăn chặn một lớp được kế thừa không?
Python không hỗ trợ từ khóa “cuối cùng” như Java để hạn chế tính kế thừa. Thông thường, chúng tôi ghi lại ý định của lớp hoặc sử dụng trình kiểm tra loại với chú thích @final từ mô-đun đánh máy.
Chủ đề liên quan
Giới thiệu đầy đủ về các lớp, đối tượng, kế thừa và khái niệm OOP của Python. Tạo các mô hình dữ liệu mạnh mẽ và mở rộng quy mô ứng dụng python của bạn.
Đa hình OOP của PythonLàm chủ tính đa hình trong Python. Tìm hiểu cách viết mã linh hoạt, liên kết lỏng lẻo bằng cách sử dụng kiểu gõ vịt, ghi đè phương thức và các lớp cơ sở trừu tượng.
Tài nguyên Python được đề xuất
Mở rộng kiến thức của bạn với các hướng dẫn tương tác, bảng ghi chú và so sánh mã có liên quan.
Cách sắp xếp danh sách trong Python
Tìm hiểu cách sắp xếp danh sách trong Python bằng phương thức Sort() và hàm Sort(). Khám phá các ví dụ về sắp xếp khóa tùy chỉnh và thứ tự đảo ngược.
Bảng cheat phương thức chuỗi Python
Hướng dẫn tham khảo đầy đủ về thao tác chuỗi Python. Làm chủ định dạng, tìm kiếm, phân tách, thay thế và kiểm tra thuộc tính chuỗi.
Python vs JavaScript: Ngôn ngữ lập trình nào tốt nhất?
So sánh toàn diện giữa Python và JavaScript. Khám phá sự khác biệt về cú pháp, hiệu suất, trường hợp sử dụng (phụ trợ so với giao diện người dùng) và các ví dụ về mã hóa.