Ví dụ đa thừa kế trong Python
Kế thừa là một khía cạnh quan trọng của mô hình hướng đối tượng. Kế thừa cung cấp khả năng sử dụng lại mã cho chương trình vì chúng ta có thể sử dụng một lớp hiện có để tạo một lớp mới thay vì tạo nó từ đầu Show
Trong kế thừa, lớp con có được các thuộc tính và có thể truy cập tất cả các thành viên dữ liệu và chức năng được xác định trong lớp cha. Một lớp con cũng có thể cung cấp cách triển khai cụ thể của nó cho các chức năng của lớp cha. Trong phần này của hướng dẫn, chúng ta sẽ thảo luận chi tiết về thừa kế Trong python, một lớp dẫn xuất có thể kế thừa lớp cơ sở bằng cách chỉ cần nhắc đến cơ sở trong dấu ngoặc sau tên lớp dẫn xuất. Xem xét cú pháp sau để kế thừa một lớp cơ sở vào lớp dẫn xuất cú phápMột lớp có thể kế thừa nhiều lớp bằng cách đề cập tất cả chúng bên trong dấu ngoặc. Hãy xem xét cú pháp sau cú phápví dụ 1đầu ra dog barking Animal Speaking Kế thừa đa cấp PythonCó thể kế thừa đa cấp trong python giống như các ngôn ngữ hướng đối tượng khác. Kế thừa đa cấp được lưu trữ khi một lớp dẫn xuất kế thừa một lớp dẫn xuất khác. Không có giới hạn về số lượng cấp độ, kế thừa đa cấp được lưu trữ trong python Cú pháp kế thừa đa cấp được đưa ra dưới đây cú phápThí dụđầu ra dog barking Animal Speaking Eating bread... Đa kế thừa PythonPython cung cấp cho chúng ta sự linh hoạt để kế thừa nhiều lớp cơ sở trong lớp con Cú pháp để thực hiện đa thừa kế được đưa ra dưới đây cú phápThí dụđầu ra Phương thức issubclass(sub,sup)Phương thức issubclass(sub, sup) được sử dụng để kiểm tra mối quan hệ giữa các lớp được chỉ định. Nó trả về true nếu lớp đầu tiên là lớp con của lớp thứ hai và sai nếu ngược lại Xem xét ví dụ sau Thí dụđầu ra Phương thức isinstance (obj, class)Phương thức isinstance() được sử dụng để kiểm tra mối quan hệ giữa các đối tượng và các lớp. Nó trả về true nếu tham số đầu tiên, i. e. , obj là thể hiện của tham số thứ hai, i. e. , tầng lớp Xem xét ví dụ sau Thí dụđầu ra Ghi đè phương thứcChúng tôi có thể cung cấp một số triển khai cụ thể của phương thức lớp cha trong lớp con của chúng tôi. Khi phương thức của lớp cha được định nghĩa trong lớp con với một số triển khai cụ thể, thì khái niệm này được gọi là ghi đè phương thức. Chúng ta có thể cần thực hiện ghi đè phương thức trong trường hợp cần định nghĩa khác về phương thức của lớp cha trong lớp con Xét ví dụ sau để thực hiện ghi đè phương thức trong python Thí dụđầu ra Ví dụ thực tế về ghi đè phương thứcđầu ra Bank Rate of interest: 10 SBI Rate of interest: 7 ICICI Rate of interest: 8 Trừu tượng hóa dữ liệu trong pythonTrừu tượng hóa là một khía cạnh quan trọng của lập trình hướng đối tượng. Trong python, chúng ta cũng có thể thực hiện ẩn dữ liệu bằng cách thêm dấu gạch dưới kép (___) làm tiền tố cho thuộc tính cần ẩn. Sau này, thuộc tính sẽ không hiển thị bên ngoài lớp thông qua đối tượng Trong hướng dẫn này, chúng tôi sẽ mô tả khái niệm Đa kế thừa Python và giải thích cách sử dụng nó trong các chương trình của bạn. Chúng tôi cũng sẽ đề cập đến kế thừa đa cấp, hàm super() và tập trung vào thứ tự giải quyết phương thức Trong hướng dẫn trước, chúng ta đã tìm hiểu về Lớp Python và Kế thừa (đơn) của Python< . Ở đó, bạn đã thấy rằng một lớp con kế thừa từ một lớp cơ sở. Tuy nhiên, Đa kế thừa là một tính năng trong đó một lớp có thể lấy các thuộc tính và phương thức từ nhiều lớp cơ sở. Do đó, nó tạo ra mức độ phức tạp và mơ hồ cao và được gọi là vấn đề kim cương trong thế giới kỹ thuật. Chúng tôi sẽ giải quyết vấn đề này sau trong hướng dẫn này. . There, you have seen that a child class inherits from a base class. However, Multiple Inheritance is a feature where a class can derive attributes and methods from more than one base classes. Hence, it creates a high level of complexity and ambiguity and known as the diamond problem in the technical world. We’ll be taking up this problem later in this tutorial. Nhận thức chung về Đa kế thừa là nó “nguy hiểm” hoặc “xấu”. ” Ngoài ra, Java không cho phép Đa kế thừa, trong khi C++ thì có. Tuy nhiên, Python đưa ra một cách tiếp cận hoàn thiện và được thiết kế tốt để giải quyết vấn đề Đa kế thừa Giải thích về đa kế thừa trong PythonBây giờ chúng ta hãy cố gắng hiểu chủ đề một cách chi tiết nội dung Vui lòng xem kỹ từng phần để hiểu các khái niệm OOP này từ trong ra ngoài Đa kế thừa là gì?Khi bạn kế thừa một lớp con từ nhiều lớp cơ sở, tình huống đó được gọi là Đa kế thừa. Tuy nhiên, nó thể hiện hành vi giống như kế thừa đơn lẻ.Cú pháp Đa thừa kế cũng tương tự như đơn thừa kế. Nhân tiện, trong Đa kế thừa, lớp con yêu cầu các thuộc tính và phương thức của tất cả các lớp cha Trong Python, các dự án và gói tuân theo một nguyên tắc gọi là DRY, tôi. e. , đừng lặp lại chính mình. Và Kế thừa lớp là một cách tuyệt vời để thiết kế một lớp sử dụng lại các tính năng của một lớp khác mà vẫn KHÔ Ví dụ đa kế thừa Python cơ bản""" Desc: Python program to demonstrate the diamond problem (a.k.a. Multiple Inheritance) """ # Parent class 1 class TeamMember(object): def __init__(self, name, uid): self.name = name self.uid = uid # Parent class 2 class Worker(object): def __init__(self, pay, jobtitle): self.pay = pay self.jobtitle = jobtitle # Deriving a child class from the two parent classes class TeamLeader(TeamMember, Worker): def __init__(self, name, uid, pay, jobtitle, exp): self.exp = exp TeamMember.__init__(self, name, uid) Worker.__init__(self, pay, jobtitle) print("Name: {}, Pay: {}, Exp: {}".format(self.name, self.pay, self.exp)) TL = TeamLeader('Jake', 10001, 250000, 'Scrum Master', 5) đầu ra là Name: Jake, Pay: 250000, Exp: 5 Ví dụ về các phương thức ghi đèKhi bạn định nghĩa một phương thức của lớp cha ở lớp con, thì quá trình này được gọi là Ghi đè Nói cách khác, một lớp con có thể ghi đè các phương thức của lớp cha hoặc lớp cha của nó bằng cách định nghĩa một hàm có cùng tên Tuy nhiên, có một số quy tắc để ghi đè
Trong Python, bạn có thể sử dụng phương thức super() để ghi đè. Nó có cú pháp sau # Override using the super() method super(class_name, self).override_method_name() Kiểm tra ví dụ dưới đây """ Desc: Python program to demonstrate overriding using the super() method """ class base(object): def base_func(self): print('Method of base class') class child(base): def base_func(self): print('Method of child class') super(child, self).base_func() class next_child(child): def base_func(self): print('Method of next_child class') super(next_child, self).base_func() obj = next_child() obj.base_func() Kết quả là Method of next_child class Method of child class Method of base class Kế thừa đa cấp là gì?Khi bạn kế thừa một lớp từ lớp dẫn xuất, thì nó được gọi là kế thừa đa cấp. Và, nó có thể tăng lên bất kỳ cấp độ nào trong PythonTrong kế thừa đa cấp, các thuộc tính của lớp cha và lớp con có sẵn cho lớp mới Thừa kế đa cấp giống như mối quan hệ giữa ông, cha và con. Bạn có thể cảm nhận nó trong các ví dụ dưới đây
Dưới đây là một minh họa đơn giản mô tả kế thừa đa cấp ________số 8_______Bạn có thể quan sát những điều sau đây bằng cách nhìn vào đoạn mã trên
Ví dụ kế thừa đa cấp Python""" Desc: Python program to demonstrate multilevel inheritance """ class Team: def show_Team(self): print("This is our Team:") # Testing class inherited from Team class Testing(Team): TestingName = "" def show_Testing(self): print(self.TestingName) # Dev class inherited from Team class Dev(Team): DevName = "" def show_Dev(self): print(self.DevName) # Sprint class inherited from Testing and Dev classes class Sprint(Testing, Dev): def show_parent(self): print("Testing :", self.TestingName) print("Dev :", self.DevName) s1 = Sprint() # Object of Sprint class s1.TestingName = "James" s1.DevName = "Barter" s1.show_Team() s1.show_parent() đầu ra là This is our Team: Testing : James Dev : Barter Đa kế thừa Python so với. Kế thừa đa cấpSự khác biệt chính giữa Kế thừa đa cấp và đa cấp như sau
Thứ tự giải quyết phương pháp (MRO)Thứ tự giải quyết phương thức (MRO) là một cách tiếp cận mà ngôn ngữ lập trình thực hiện để giải quyết các biến hoặc phương thức của một lớp Python có một lớp cơ sở dựng sẵn có tên là đối tượng. Vì vậy, bất kỳ lớp dựng sẵn hoặc do người dùng định nghĩa nào khác mà bạn định nghĩa cuối cùng sẽ kế thừa từ nó Bây giờ, hãy nói về cách thứ tự phân giải phương thức (MRO) diễn ra trong Python
Ví dụ MRO cơ bản""" Desc: Python program to demonstrate how MRO resolves a method or an attribute """ class Heap: def create(self): print(" Creating Heap") class Node(Heap): def create(self): print(" Creating Node") node = Node() node.create() Đây là kết quả Creating Node Ví dụ MRO với nhiều kế thừaName: Jake, Pay: 250000, Exp: 50 Đây là đầu ra Name: Jake, Pay: 250000, Exp: 51 Trong ví dụ này, chúng tôi đã giới thiệu Đa thừa kế, được gọi là Thừa kế kim cương hoặc Kim cương tử thần chết người Phương thức cho Lệnh giải quyết phương thức (MRO)Bạn có thể kiểm tra Thứ tự giải quyết phương pháp của một lớp. Python cung cấp thuộc tính __mro__ và phương thức mro(). Với những thứ này, bạn có thể nhận được thứ tự giải quyết Xem ví dụ bên dưới Name: Jake, Pay: 250000, Exp: 52 Kết quả là Name: Jake, Pay: 250000, Exp: 53 Các phương thức kế thừa tích hợp trong PythonPython cung cấp cho chúng ta hai phương thức tích hợp để kiểm tra tính kế thừa. Họ đây rồi a. isinstance()Hàm isinstance() kiểm tra một loại đối tượng. Nó trả về True hoặc False tương ứng Name: Jake, Pay: 250000, Exp: 54 Kiểm tra ví dụ dưới đây Name: Jake, Pay: 250000, Exp: 55 Đây là kết quả Name: Jake, Pay: 250000, Exp: 56 b. issubclass()Hàm issubclass() kiểm tra xem một lớp cụ thể có kế thừa một lớp khác hay không. Nó có cú pháp sau Name: Jake, Pay: 250000, Exp: 57 Nó cho kết quả là True nếu lớp đã cho thực sự được dẫn xuất từ lớp cha hoặc trả về False nếu ngược lại Name: Jake, Pay: 250000, Exp: 58 Kết quả là như sau Name: Jake, Pay: 250000, Exp: 59 Sau khi kết thúc hướng dẫn này, bạn sẽ cảm thấy thoải mái khi sử dụng Đa kế thừa Python. Tuy nhiên, chúng tôi đã cung cấp cho bạn đủ ví dụ để bạn thực hành nhiều hơn và tự tin hơn Đa kế thừa trong Python với ví dụ là gì?nếu lớp C kế thừa từ P thì tất cả các lớp con của C cũng kế thừa từ P. Khi một lớp được dẫn xuất từ nhiều hơn một lớp cơ sở thì nó được gọi là Đa kế thừa. Lớp dẫn xuất kế thừa tất cả các tính năng của trường hợp cơ sở.
Bạn có thể có nhiều kế thừa trong Python 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 với ví dụ là gì?Đa kế thừa là một tính năng của C++ khi một lớp có thể kế thừa từ nhiều lớp . Các hàm tạo của các lớp kế thừa được gọi theo cùng thứ tự mà chúng được kế thừa. Ví dụ, trong chương trình sau, hàm tạo của B được gọi trước hàm tạo của A.
Tại sao đa thừa kế không được hỗ trợ trong Python?Đa kế thừa hữu ích trong nhiều tình huống với tư cách là nhà phát triển, nhưng nó làm tăng đáng kể độ phức tạp của ngôn ngữ, khiến cuộc sống của cả nhà phát triển trình biên dịch và lập trình viên trở nên khó khăn hơn. |