Python không hỗ trợ đa kế thừa
Mặc dù người ta có thể biện minh cho nhiều kế thừa thông qua việc kháng cáo một số khía cạnh triết học của OOP (ví dụ: chỉ ra rằng có vô số thiết bị có thể được coi là "điện thoại" và "máy tính" một cách hợp pháp theo bất kỳ định nghĩa hợp lý nào về các thuật ngữ đó), khi Show Kế thừa không chỉ đơn thuần là một cấu trúc triết học; . Và các cơ chế ngôn ngữ có thể được sử dụng để hoàn thành các nhiệm vụ khác nhau. Cụ thể, tính kế thừa trong C++ gần như là cách duy nhất để một lớp có các phương thức và chức năng được đưa vào từ bên ngoài Ví dụ: giả sử bạn có cấu trúc như Bây giờ nếu điều đó hiệu quả, rõ ràng Cho nên. nó hoạt động như thế nào? . kế thừa từ một lớp cơ sở. Hàm tạo Và vâng, tôi đã không viết sai. Đây là một cơ chế để triển khai một dạng chức năng mixin trong C++. Bạn có thể gộp các chức năng chung vào một lớp cơ sở và thông qua sự kỳ diệu của các mẫu, bạn có thể sử dụng tên lớp dẫn xuất (mặc dù nó chưa được định nghĩa chính xác) theo một số cách cụ thể cho phép bạn gọi các hàm của lớp dẫn xuất từ các hàm của lớp cơ sở Điều này được thực hiện bởi vì tính kế thừa là công cụ duy nhất mà C++ có để tác động đến giao diện thành viên của lớp từ bên ngoài lớp Đây là điều, mặc dù. Không có lý do gì mà Đa kế thừa là một tính năng trong đó một lớp có thể kế thừa các thuộc tính và phương thức từ nhiều hơn một lớp cha Để tôi nói cho bạn biết Python không hỗ trợ đa kế thừa như các ngôn ngữ khác như Java, Ruby, v.v. Tuy nhiên, chúng ta có thể đạt được nó bằng MRO Thứ tự giải quyết phương pháp (MRO) trong PythonTrong kịch bản đa thừa kế, bất kỳ thuộc tính cụ thể nào được tìm kiếm đầu tiên trong lớp hiện tại. Nếu không tìm thấy, quá trình tìm kiếm tiếp tục vào các lớp cha theo chiều sâu, trái phải trước mà không tìm kiếm cùng một lớp hai lần Hãy để tôi chỉ cho bạn qua nó bằng ví dụ. - Tạo một tệp có tên myfile. py và dán các dòng sau vào đó class A: Vui lòng chạy myfile. py $ python myfile.pyOutput - show of B called Nếu bạn muốn xem phương thức sẽ được gọi theo thứ tự nào, hãy gõ lệnh bên dưới $ print(D.__mro__) siêu trong Python
Hãy lấy một ví dụ- class A: Nếu bạn muốn gọi cha của lớp D thì có thể thực hiện được bằng từ khóa “super” như tôi đã đề cập trong ví dụ trên Python có thể có nhiều kế thừa không?Python là một trong số ít ngôn ngữ lập trình hiện đại hỗ trợ đa kế thừa . Đa kế thừa là khả năng dẫn xuất một lớp từ nhiều lớp cơ sở cùng một lúc. Đa kế thừa có tiếng xấu đến mức hầu hết các ngôn ngữ lập trình hiện đại không hỗ trợ nó.
Kế thừa nào không được hỗ trợ trong Python?Câu trả lời. Không giống như các ngôn ngữ lập trình hướng đối tượng khác như Java, Python hỗ trợ tất cả các kiểu kế thừa, thậm chí là đa kế thừa. Và mặc dù C++ cũng hỗ trợ kiểu kế thừa này, nhưng nó không có cách tiếp cận phức tạp và được thiết kế tốt như Python
Tại sao đa thừa kế không được hỗ trợ?Java không hỗ trợ đa kế thừa trong các lớp vì nó có thể dẫn đến vấn đề kim cương và thay vì cung cấp một số cách phức tạp để giải quyết vấn đề đó, .
Tại sao đa kế thừa không được hỗ trợ trong java và được hỗ trợ trong Python?Lý do đằng sau điều này là để tránh sự mơ hồ . Hãy xem xét trường hợp lớp B mở rộng lớp A và lớp C và cả lớp A và C đều có cùng một phương thức display(). Bây giờ trình biên dịch java không thể quyết định nên kế thừa phương thức hiển thị nào. Để ngăn chặn tình trạng như vậy, nhiều kế thừa không được phép trong java. |